ACPI!ACPIBuildProcessDeviceGenericEvalStrict函数对节点ISA的处理没有_EJD子节点

ACPI!ACPIBuildProcessDeviceGenericEvalStrict函数对节点ISA的处理没有_EJD子节点

1: kd> g

Breakpoint 5 hit

eax=00000009 ebx=00000009 ecx=89984198 edx=00000001 esi=89984188 edi=80b019f4

eip=f73fb911 esp=f78aef68 ebp=f78aef84 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

ACPI!ACPIBuildProcessGenericList+0x4d:

f73fb911 ff55f4 call dword ptr [ebp-0Ch] ss:0010:f78aef78={ACPI!ACPIBuildProcessDeviceGenericEvalStrict (f73fafda)}

1: kd> t

eax=00000009 ebx=00000009 ecx=89984198 edx=00000001 esi=89984188 edi=80b019f4

eip=f73fafda esp=f78aef64 ebp=f78aef84 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

ACPI!ACPIBuildProcessDeviceGenericEvalStrict:

f73fafda 55 push ebp

1: kd> kc

00 ACPI!ACPIBuildProcessDeviceGenericEvalStrict

01 ACPI!ACPIBuildProcessGenericList

02 ACPI!ACPIBuildDeviceDpc

03 nt!KiRetireDpcList

04 nt!KiDispatchInterrupt

WARNING: Frame IP not in any known module. Following frames may be wrong.

05 0x0

1: kd> dv

BuildRequest = 0x89984188

status = 0n8

1: kd> dx -r1 ((ACPI!_ACPI_BUILD_REQUEST *)0x89984188)

((ACPI!_ACPI_BUILD_REQUEST *)0x89984188) : 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 : 0x9 \[Type: unsigned long

+0x018\] NextWorkDone : 0x2 \[Type: unsigned long

+0x01c\] BuildContext : 0x899c0a88 \[Type: void \*

+0x020\] Status : 0 \[Type: long

+0x024\] CurrentObject : 0x899b22bc \[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!AcpiBuildDevicePowerNameLookup

f7438068 ACPI!AcpiBuildDevicePowerNameLookup = unsigned long [23]

1: kd> dx -r1 (*((ACPI!unsigned long (*)[23])0xf7438068))

(*((ACPI!unsigned long (*)[23])0xf7438068)) [Type: unsigned long [23]]

0\] : 0x0 \[Type: unsigned long

1\] : 0x0 \[Type: unsigned long

2\] : 0x0 \[Type: unsigned long

3\] : 0x0 \[Type: unsigned long

4\] : 0x0 \[Type: unsigned long

5\] : 0x0 \[Type: unsigned long

6\] : 0x0 \[Type: unsigned long

7\] : 0x0 \[Type: unsigned long

8\] : 0x0 \[Type: unsigned long

9\] : 0x444a455f \[Type: unsigned long

10\] : 0x0 \[Type: unsigned long

11\] : 0x5752505f \[Type: unsigned long

12\] : 0x0 \[Type: unsigned long

13\] : 0x3052505f \[Type: unsigned long

14\] : 0x0 \[Type: unsigned long

15\] : 0x3152505f \[Type: unsigned long

16\] : 0x0 \[Type: unsigned long

17\] : 0x3252505f \[Type: unsigned long

18\] : 0x0 \[Type: unsigned long

19\] : 0x5352435f \[Type: unsigned long

20\] : 0x0 \[Type: unsigned long

21\] : 0x4353505f \[Type: unsigned long

22\] : 0x0 \[Type: unsigned long

1: kd> dd 0xf7438068

f7438068 00000000 00000000 00000000 00000000

f7438078 00000000 00000000 00000000 00000000

f7438088 00000000 444a455f 00000000 5752505f

f7438098 00000000 3052505f 00000000 3152505f

f74380a8 00000000 3252505f 00000000 5352435f

f74380b8 00000000 4353505f 00000000 f73fb840

f74380c8 00000000 00000000 00000000 f73fb840

f74380d8 00000000 f73fb94c f73fb98a f73fba36

1: kd> db 0xf7438068

f7438068 00 00 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 00 00 ................

f7438088 00 00 00 00 5f 45 4a 44-00 00 00 00 5f 50 52 57 ...._EJD...._PRW

f7438098 00 00 00 00 5f 50 52 30-00 00 00 00 5f 50 52 31 ...._PR0...._PR1

f74380a8 00 00 00 00 5f 50 52 32-00 00 00 00 5f 43 52 53 ...._PR2...._CRS

f74380b8 00 00 00 00 5f 50 53 43-00 00 00 00 40 b8 3f f7 ...._PSC....@.?.

f74380c8 00 00 00 00 00 00 00 00-00 00 00 00 40 b8 3f f7 ............@.?.

f74380d8 00 00 00 00 4c b9 3f f7-8a b9 3f f7 36 ba 3f f7 ....L.?...?.6.?.

Device (ISA)

{

Name (_ADR, 0x00070000) // _ADR: Address

Device (MBRD)

{

//

// Base everything on the current amount of workDone

//

objectName = AcpiBuildDevicePowerNameLookup[BuildRequest->CurrentWorkDone];

//

// Does this object exists? 不存在_EJD对象。

//

BuildRequest->CurrentObject = ACPIAmliGetNamedChild(

deviceExtension->AcpiObject,

objectName

); eax=00000000

1: kd> p

eax=00000000 ebx=899c0a88 ecx=899b2278 edx=00000001 esi=89984188 edi=899841cc

eip=f73fb00f esp=f78aef50 ebp=f78aef60 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

ACPI!ACPIBuildProcessDeviceGenericEvalStrict+0x35:

f73fb00f 85c0 test eax,eax