核心内容摘要
御手洗家兄妹:光影交织的日常,心动触碰的瞬间
ACPI!ACPIBuildProcessDevicePhaseEjd和ACPI!ACPIBuildProcessDevicePhasePrw对节点ISA的处理1: kd gBreakpoint 6 hiteax00000000 ebx00000009 ecx00000041 edx00000002 esi89984188 edi80b019f4eipf73fb914 espf78aef6c ebpf78aef84 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246ACPI!ACPIBuildProcessGenericList0x50:f73fb914 85db test ebx,ebx1: kd gBreakpoint 5 hiteax0000000a ebx0000000a ecx89984198 edx00000001 esi89984188 edi80b019f4eipf73fb911 espf78aef68 ebpf78aef84 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246ACPI!ACPIBuildProcessGenericList0x4d:f73fb911 ff55f4 call dword ptr [ebp-0Ch] ss:0010:f78aef78{ACPI!ACPIBuildProcessDevicePhaseEjd (f73fddf
}1: kd teax0000000a ebx0000000a ecx89984198 edx00000001 esi89984188 edi80b019f4eipf73fddf2 espf78aef64 ebpf78aef84 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246ACPI!ACPIBuildProcessDevicePhaseEjd:f73fddf2 55 push ebp1: kd kc#00 ACPI!ACPIBuildProcessDevicePhaseEjd01 ACPI!ACPIBuildProcessGenericList02 ACPI!ACPIBuildDeviceDpc03 nt!KiRetireDpcList04 nt!KiDispatchInterruptWARNING: Frame IP not in any known module. Following frames may be wrong.05 0x01: kd dvBuildRequest 0x89984188status 0n-1986510456#define DEV_CAP_SERIAL 0x00000000 0400 00001: kd dx -r1 ((ACPI!_ACPI_BUILD_REQUEST *)0x
((ACPI!_ACPI_BUILD_REQUEST *)0x
: 0x89984188 [Type: _ACPI_BUILD_REQUEST *][0x000] ListEntry [Type: _LIST_ENTRY][0x008] Signature : 0x5f534750 [Type: unsigned long][0x00c] Flags : 0x1 [Type: unsigned long][0x00c] UFlags [Type: __unnamed][0x010] WorkDone : 0x1 [Type: unsigned long][0x014] CurrentWorkDone : 0xa [Type: unsigned long][0x018] NextWorkDone : 0x2 [Type: unsigned long][0x01c] BuildContext : 0x899c0a88 [Type: void *][0x020] Status : 0 [Type: long][0x024] CurrentObject : 0x0 [Type: _NSObj *][0x028] CallBack : 0x0 [Type: void (*)(void *,void *,long)][0x02c] CallBackContext : 0x0 [Type: void *][0x030] DeviceRequest [Type: __unnamed][0x030] RunRequest [Type: __unnamed][0x030] SynchronizeRequest [Type: __unnamed][0x044] Integer : 0xf [Type: unsigned long][0x044] String : 0xf : Unable to read memory at Address 0xf [Type: unsigned char *][0x044] TargetListEntry : 0xf [Type: _LIST_ENTRY *]1: kd dt acpi!_DEVICE_EXTENSION 0x899c0a880x000 Flags : 0x0040100000000008_PRW (Power Resources for Wake)当设备有能力从睡眠状态唤醒系统时_PRW被用来列举设备所依赖的用于唤醒的电源资源列表。
} else {//// The next step is to run the _PRW//BuildRequest-NextWorkDone WORK_DONE_PRW;}#define WORK_DONE_PRW WORK_DONE_STEP_8typedef enum _WORK_DONE {WORK_DONE_COMPLETE 0,WORK_DONE_PENDING,WORK_DONE_FAILURE,WORK_DONE_STEP_0,WORK_DONE_STEP_1,WORK_DONE_STEP_2,WORK_DONE_STEP_3,WORK_DONE_STEP_4,WORK_DONE_STEP_5,WORK_DONE_STEP_6,WORK_DONE_STEP_7, aWORK_DONE_STEP_8, b831: kd dt ACPI!_ACPI_BUILD_REQUEST 0x899841880x000 ListEntry : _LIST_ENTRY [ 0x89984138 - 0x89986158 ]0x008 Signature : 0x5f5347500x00c Flags : 10x00c UFlags : __unnamed0x010 WorkDone : 10x014 CurrentWorkDone : 0xa0x018 NextWorkDone : 0xb0x01c BuildContext : 0x899c0a88 Void0x020 Status : 0n00x024 CurrentObject : (null)0x028 CallBack : (null)0x02c CallBackContext : (null)0x030 DeviceRequest : __unnamed0x030 RunRequest : __unnamed0x030 SynchronizeRequest : __unnamed0x044 Integer : 0xf0x044 String : 0x0000000f --- memory read error at address 0x0000000f ---0x044 TargetListEntry : 0x0000000f _LIST_ENTRYACPIBuildProcessDevicePhaseEjdExit://// Check to see if we have a dock device//if (!ACPIDockIsDockDevice( deviceExtension-AcpiObject) ) {//// If its not a dock, then dont bother...//status STATUS_SUCCESS;goto ACPIBuildProcessDevicePhaseEjdExit2;}//// We wont actually need to call the interpreter, but we will call// the generic callback so that we dont have to duplicate code//ACPIBuildCompleteGeneric(NULL,status,NULL,BuildRequest);//// Done//return status;}1: kd kc#00 ACPI!ACPIBuildProcessDeviceGenericEvalStrict01 ACPI!ACPIBuildProcessGenericList02 ACPI!ACPIBuildDeviceDpc03 nt!KiRetireDpcList04 nt!KiDispatchInterruptWARNING: Frame IP not in any known module. Following frames may be wrong.05 0x01: kd dvBuildRequest 0x89984188status 0n81: kd dx -r1 ((ACPI!_ACPI_BUILD_REQUEST *)0x
((ACPI!_ACPI_BUILD_REQUEST *)0x
: 0x89984188 [Type: _ACPI_BUILD_REQUEST *][0x000] ListEntry [Type: _LIST_ENTRY][0x008] Signature : 0x5f534750 [Type: unsigned long][0x00c] Flags : 0x1 [Type: unsigned long][0x00c] UFlags [Type: __unnamed][0x010] WorkDone : 0x1 [Type: unsigned long][0x014] CurrentWorkDone : 0xb [Type: unsigned long][0x018] NextWorkDone : 0x2 [Type: unsigned long][0x01c] BuildContext : 0x899c0a88 [Type: void *][0x020] Status : 0 [Type: long][0x024] CurrentObject : 0x0 [Type: _NSObj *][0x028] CallBack : 0x0 [Type: void (*)(void *,void *,long)][0x02c] CallBackContext : 0x0 [Type: void *][0x030] DeviceRequest [Type: __unnamed][0x030] RunRequest [Type: __unnamed][0x030] SynchronizeRequest [Type: __unnamed][0x044] Integer : 0xf [Type: unsigned long][0x044] String : 0xf : Unable to read memory at Address 0xf [Type: unsigned char *][0x044] TargetListEntry : 0xf [Type: _LIST_ENTRY *]1: kd x acpi!AcpiBuildDevicePowerNameLookupf7438068 ACPI!AcpiBuildDevicePowerNameLookup unsigned long [23]1: kd dd f7438068f7438068 00000000 00000000 00000000 00000000f7438078 00000000 00000000 00000000 00000000f7438088 00000000 444a455f 00000000 5752505ff7438098 00000000 3052505f 00000000 3152505ff74380a8 00000000 3252505f 00000000 5352435ff74380b8 00000000 4353505f 00000000 f73fb840f74380c8 00000000 00000000 00000000 f73fb840f74380d8 00000000 f73fb94c f73fb98a f73fba361: kd db f7438068f7438068 00 00 00 00 00 00 00
00 00 00 00 00 00 00 ................f7438078 00 00 00 00 00 00 00
00 00 00 00 00 00 00 ................f7438088 00 00 00 00 5f 45 4a
00 00 00 5f 50 52 57 ...._EJD...._PRWf7438098 00 00 00 00 5f 50 52
00 00 00 5f 50 52 31 ...._PR
..._PR1f74380a8 00 00 00 00 5f 50 52
00 00 00 5f 43 52 53 ...._PR
..._CRSf74380b8 00 00 00 00 5f 50 53
00 00 00 40 b8 3f f7 ...._PSC.....?.f74380c8 00 00 00 00 00 00 00
00 00 00 40 b8 3f f7 .............?.f74380d8 00 00 00 00 4c b9 3f f
a b9 3f f7 36 ba 3f f7 ....L.?...?.
?.1: kd gBreakpoint 6 hiteax00000000 ebx0000000b ecx00000041 edx00000002 esi89984188 edi80b019f4eipf73fb914 espf78aef6c ebpf78aef84 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246ACPI!ACPIBuildProcessGenericList0x50:f73fb914 85db test ebx,ebx1: kd gBreakpoint 5 hiteax0000000c ebx0000000c ecx89984198 edx00000001 esi89984188 edi80b019f4eipf73fb911 espf78aef68 ebpf78aef84 iopl0 nv up ei pl zr na pe nccs0008 ss0010 ds0023 es0023 fs0030 gs0000 efl00000246ACPI!ACPIBuildProcessGenericList0x4d:f73fb911 ff55f4 call dword ptr [ebp-0Ch] ss:0010:f78aef78{ACPI!ACPIBuildProcessDevicePhasePrw (f73fd18a)}1: kd t1: kd kc#00 ACPI!ACPIBuildProcessDevicePhasePrw01 ACPI!ACPIBuildProcessGenericList02 ACPI!ACPIBuildDeviceDpc03 nt!KiRetireDpcList04 nt!KiDispatchInterruptWARNING: Frame IP not in any known module. Following frames may be wrong.05 0x01: kd dvBuildRequest 0x89984188ignorePrw 0x00 status 0n-146812534argData struct _ObjData1: kd dx -r1 ((ACPI!_ACPI_BUILD_REQUEST *)0x
((ACPI!_ACPI_BUILD_REQUEST *)0x
: 0x89984188 [Type: _ACPI_BUILD_REQUEST *][0x000] ListEntry [Type: _LIST_ENTRY][0x008] Signature : 0x5f534750 [Type: unsigned long][0x00c] Flags : 0x1 [Type: unsigned long][0x00c] UFlags [Type: __unnamed][0x010] WorkDone : 0x1 [Type: unsigned long][0x014] CurrentWorkDone : 0xc [Type: unsigned long][0x018] NextWorkDone : 0x2 [Type: unsigned long][0x01c] BuildContext : 0x899c0a88 [Type: void *][0x020] Status : 0 [Type: long][0x024] CurrentObject : 0x0 [Type: _NSObj *][0x028] CallBack : 0x0 [Type: void (*)(void *,void *,long)][0x02c] CallBackContext : 0x0 [Type: void *][0x030] DeviceRequest [Type: __unnamed][0x030] RunRequest [Type: __unnamed][0x030] SynchronizeRequest [Type: __unnamed][0x044] Integer : 0xf [Type: unsigned long][0x044] String : 0xf : Unable to read memory at Address 0xf [Type: unsigned char *][0x044] TargetListEntry : 0xf [Type: _LIST_ENTRY *]1: kd dt acpi!_DEVICE_EXTENSION 0x899c0a880x000 Flags : 0x00401000000000080x000 UFlags : __unnamed0x008 Signature : 0x5f5347500x00c DebugFlags : 00x010 DispatchTable : (null)0x014 WorkContext : WORK_QUEUE_CONTEXT0x014 Fdo : _FDO_DEVICE_EXTENSION0x014 Filter : _FILTER_DEVICE_EXTENSION0x014 Pdo : _PDO_DEVICE_EXTENSION0x058 WorkQueue : EXTENSION_WORKER0x058 Button : BUTTON_EXTENSION0x058 Thermal : THERMAL_EXTENSION0x058 LinkNode : LINK_NODE_EXTENSION0x058 Dock : DOCK_EXTENSION0x058 Processor : _PROCESSOR_DEVICE_EXTENSION0x088 DeviceState : 0 ( Stopped )0x08c PreviousState : 0 ( Stopped )0x090 PowerInfo : _ACPI_POWER_INFO0x10c DeviceID : 0x00070000 --- memory read error at address 0x00070000 ---0x10c Address : 0x700000x110 InstanceID : (null)0x114 ResourceList : (null)0x118 PnpResourceList : (null)0x11c OutstandingIrpCount : 0n10x120 ReferenceCount : 0n520x124 HibernatePathCount : 0n00x128 RemoveEvent : (null)0x12c AcpiObject : 0x899b2278 _NSObj0x130 DeviceObject : (null)0x134 TargetDeviceObject : (null)0x138 PhysicalDeviceObject : (null)0x13c ParentExtension : 0x899c0d58 _DEVICE_EXTENSION0x140 ChildDeviceList : _LIST_ENTRY [ 0x899c0a68 - 0x89979710 ]0x148 SiblingDeviceList : _LIST_ENTRY [ 0x89982768 - 0x899c0d38 ]0x150 EjectDeviceHead : _LIST_ENTRY [ 0x899c0bd8 - 0x899c0bd8 ]0x158 EjectDeviceList : _LIST_ENTRY [ 0x899c0be0 - 0x899c0be0 ]1: kd dx -id 0,0,899a2278 -r1 (*((ACPI!_ACPI_POWER_INFO *)0x899c0b
)(*((ACPI!_ACPI_POWER_INFO *)0x899c0b
) [Type: _ACPI_POWER_INFO][0x000] Context : 0x0 [Type: void *][0x004] PowerState : PowerDeviceUnspecified (
[Type: _DEVICE_POWER_STATE][0x008] DeviceNotifyHandler : 0x0 [Type: void (*)(void *,unsigned long)][0x00c] HandlerContext : 0x0 [Type: void *][0x010] PowerNode [Type: _ACPI_DEVICE_POWER_NODE * [4]][0x020] PowerObject [Type: _NSObj * [5]][0x034] WakeBit : 0x0 [Type: unsigned long][0x038] DevicePowerMatrix [Type: _DEVICE_POWER_STATE [7]][0x054] SystemWakeLevel : PowerSystemUnspecified (
[Type: _SYSTEM_POWER_STATE][0x058] DeviceWakeLevel : PowerDeviceUnspecified (
[Type: _DEVICE_POWER_STATE][0x05c] DesiredPowerState : PowerDeviceUnspecified (
[Type: _DEVICE_POWER_STATE][0x060] WakeSupportCount : 0x0 [Type: unsigned long][0x064] WakeSupportList [Type: _LIST_ENTRY][0x06c] CurrentPowerRequest : 0x0 [Type: _ACPI_POWER_REQUEST *][0x070] PowerRequestListEntry [Type: _LIST_ENTRY][0x078 ( 0:
] SupportDeviceD1 : 0x0 [Type: unsigned long][0x078 ( 1:
] SupportDeviceD2 : 0x0 [Type: unsigned long][0x078 ( 2:
] SupportWakeFromD0 : 0x0 [Type: unsigned long][0x078 ( 3:
] SupportWakeFromD1 : 0x0 [Type: unsigned long][0x078 ( 4:
] SupportWakeFromD2 : 0x0 [Type: unsigned long][0x078 ( 5:
] SupportWakeFromD3 : 0x0 [Type: unsigned long][0x078 (31:
] Reserved : 0x0 [Type: unsigned long]1: kd dx -id 0,0,899a2278 -r1 (*((ACPI!_NSObj * (*)[5])0x899c0b
)(*((ACPI!_NSObj * (*)[5])0x899c0b
) [Type: _NSObj * [5]][0] : 0x0 [Type: _NSObj *][1] : 0x0 [Type: _NSObj *][2] : 0x0 [Type: _NSObj *][3] : 0x0 [Type: _NSObj *][4] : 0x0 [Type: _NSObj *]1: kd x acpi!AcpiOverrideAttributesf743b618 ACPI!AcpiOverrideAttributes 0//// ACPI Override Attributes//#define ACPI_OVERRIDE_NVS_CHECK 0x00000001#define ACPI_OVERRIDE_STA_CHECK 0x00000002#define ACPI_OVERRIDE_MP_SLEEP 0x00000004#define ACPI_OVERRIDE_OPTIONAL_WAKE 0x00000008#define ACPI_OVERRIDE_DISABLE_S1 0x00000010#define ACPI_OVERRIDE_DISABLE_S2 0x00000020#define ACPI_OVERRIDE_DISABLE_S3 0x00000040#define ACPI_OVERRIDE_DELL_MAXULONG_BUGCHECK 0x00000080//// Should we ignore the _PRW for this device?//if ( (AcpiOverrideAttributes ACPI_OVERRIDE_OPTIONAL_WAKE) !(deviceExtension-Flags DEV_CAP_NO_DISABLE_WAKE) ) {ignorePrw TRUE;}typedef enum _DEVICE_POWER_STATE {PowerDeviceUnspecified 0, 未说明的;不明确的;PowerDeviceD0,PowerDeviceD1,PowerDeviceD2,PowerDeviceD3,PowerDeviceMaximum} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;其中D0是工作态 状态D
D2是休眠态D3是关闭状态。
#define DEV_CAP_NO_DISABLE_WAKE 0x00000008 00000000//// Get the appropriate _PSx object to go with this object//deviceExtension-PowerInfo.PowerObject[PowerDeviceUnspecified] ACPIAmliGetNamedChild(deviceExtension-AcpiObject,PACKED_PSW);1: kd dx -id 0,0,899a2278 -r1 (*((ACPI!_NSObj * (*)[5])0x899c0b