ACPI!AMLIInitialize函数分析之ACPI!CreateNameSpaceObject----重要

ACPI!AMLIInitialize函数分析之ACPI!CreateNameSpaceObject----重要

1: kd> g

Breakpoint 47 hit

eax=89da3000 ebx=00000000 ecx=f743a8e0 edx=00010000 esi=00000000 edi=00000000

eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 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!CreateNameSpaceObject:

f741dc18 55 push ebp

1: kd> kc

00 ACPI!CreateNameSpaceObject
01 ACPI!AMLIInitialize
02 ACPI!ACPIInitializeAMLI
03 ACPI!ACPIInitialize

04 ACPI!ACPIInitStartACPI

05 ACPI!ACPIRootIrpStartDevice

06 ACPI!ACPIDispatchIrp

07 nt!IofCallDriver

08 nt!IopSynchronousCall

09 nt!IopStartDevice

0a nt!PipProcessStartPhase1

0b nt!PipProcessDevNodeTree

0c nt!PipDeviceActionWorker

0d nt!PipRequestDeviceAction

0e nt!IopInitializeBootDrivers

0f nt!IoInitSystem

10 nt!Phase1Initialization

11 nt!PspSystemThreadStartup

12 nt!KiThreadStartup

1: kd> kv

ChildEBP RetAddr Args to Child

00 f789a1bc f7414b22 89da3000 f742c09c 00000000 ACPI!CreateNameSpaceObject (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\acpins.c @ 188]

01 f789a1f0 f74537cc 00000000 00000000 00000000 ACPI!AMLIInitialize+0x143 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\amliapi.c @ 144]

02 f789a230 f7454209 804ee150 f743b620 804ee090 ACPI!ACPIInitializeAMLI+0x112 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\shared\acpiinit.c @ 433]

03 f789a248 f740899d 89db4020 89db4ea0 00000000 ACPI!ACPIInitialize+0x41 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\shared\acpiinit.c @ 93]

04 f789a27c f744f51e 89db4020 00000000 f744f3ea ACPI!ACPIInitStartACPI+0x6f (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\init.c @ 1211]

05 f789a2a8 f740410e 89db4020 89df3400 89db4020 ACPI!ACPIRootIrpStartDevice+0x134 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\root.c @ 1340]

06 f789a2dc 80a2675c 89db4020 89df3460 89df3518 ACPI!ACPIDispatchIrp+0x19e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\dispatch.c @ 690]

07 f789a2f8 80c95e00 f789a36c 89db5008 89db5cb8 nt!IofCallDriver+0x62 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\io\iomgr\iosubs.c @ 2237]

08 f789a328 80c95f56 00000000 f789a348 00000000 nt!IopSynchronousCall+0x1aa (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 258]

09 f789a36c 80c8f415 89db5cb8 00000001 00000000 nt!IopStartDevice+0x78 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 334]

0a f789a388 80c94d55 89db5cb8 00000000 00000000 nt!PipProcessStartPhase1+0x9d (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 5014]

0b f789a5d4 80a2dde9 89db9ac0 00000000 89df9300 nt!PipProcessDevNodeTree+0x1c7 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 4648]

0c f789a618 80a2e161 00000000 00000000 800837c8 nt!PipDeviceActionWorker+0xcd (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 710]

0d f789a630 80e69358 00000000 00000005 00000000 nt!PipRequestDeviceAction+0x139 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 598]

0e f789a694 80e655c7 80077000 f789a7dc 00034000 nt!IopInitializeBootDrivers+0x392 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpinit.c @ 1440]

0f f789a838 80e632fd 80077000 00000000 89dd4020 nt!IoInitSystem+0x70b (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\ioinit.c @ 665]

10 f789adac 80d391f0 80077000 00000000 00000000 nt!Phase1Initialization+0x9b3 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\init\init.c @ 2221]

11 f789addc 80b00d52 80e6294a 80077000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]

12 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]

1: kd> dv

pheap = 0x89da3000

pszName = 0xf742c09c "\"

pnsScope = 0x00000000

powner = 0x00000000

ppns = 0x00000000

dwfNS = 0

pns = 0x00000008

rc = 0n-146678759

pnsParent = 0xf742c09c

iLen = 0n0

windbg> .open -a fffffffff7454209

ACPI!AMLIInitialize函数分析之ACPI!CreateNameSpaceObject

BOOLEAN

ACPIInitialize(

PVOID Context

)

{

BOOLEAN bool;

NTSTATUS status;

PRSDT rootSystemDescTable;

PAGED_CODE();

//

// Initialize the interpreter

//

status = ACPIInitializeAMLI();

NTSTATUS AMLIAPI AMLIInitialize(ULONG dwCtxtBlkSize, ULONG dwGlobalHeapBlkSize,

ULONG dwfAMLIInit, ULONG dwmsTimeSliceLength,

ULONG dwmsTimeSliceInterval, ULONG dwmsMaxCTObjs)

{

if ((rc = NewHeap(gdwGlobalHeapBlkSize, &gpheapGlobal)) ==

STATUS_SUCCESS)

{

int i;

PNSOBJ pns;

static PSZ apszDefinedRootObjs[] =

{

"_GPE", "_PR", "_SB", "_SI", "_TZ"

};

#define NUM_DEFINED_ROOT_OBJS (sizeof(apszDefinedRootObjs)/sizeof(PSZ))

gpheapGlobal->pheapHead = gpheapGlobal;

if ((rc = CreateNameSpaceObject(gpheapGlobal, NAMESTR_ROOT, NULL,

NULL, NULL, 0)) == STATUS_SUCCESS)

{

NTSTATUS LOCAL CreateNameSpaceObject(PHEAP pheap, PSZ pszName, PNSOBJ pnsScope,

POBJOWNER powner, PPNSOBJ ppns,

ULONG dwfNS)

{

if (pnsScope == NULL)

pnsScope = gpnsNameSpaceRoot;

1: kd> dv acpi!gpnsNameSpaceRoot

ACPI!gpnsNameSpaceRoot = 0x00000000

1: kd> t

eax=f789a1b8 ebx=f742c09c ecx=f743a8e0 edx=00010000 esi=00000000 edi=00000000

eip=f741da24 esp=f789a194 ebp=f789a1bc iopl=0 nv up ei pl nz na pe nc

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

ACPI!GetNameSpaceObject:

f741da24 55 push ebp

1: kd> kc

00 ACPI!GetNameSpaceObject

01 ACPI!CreateNameSpaceObject

02 ACPI!AMLIInitialize

03 ACPI!ACPIInitializeAMLI

04 ACPI!ACPIInitialize

05 ACPI!ACPIInitStartACPI

06 ACPI!ACPIRootIrpStartDevice

07 ACPI!ACPIDispatchIrp

08 nt!IofCallDriver

09 nt!IopSynchronousCall

0a nt!IopStartDevice

0b nt!PipProcessStartPhase1

0c nt!PipProcessDevNodeTree

0d nt!PipDeviceActionWorker

0e nt!PipRequestDeviceAction

0f nt!IopInitializeBootDrivers

10 nt!IoInitSystem

11 nt!Phase1Initialization

12 nt!PspSystemThreadStartup

13 nt!KiThreadStartup

1: kd> dv

pszObjPath = 0xf742c09c "\"

pnsScope = 0x00000000

ppns = 0xf789a1b8

if (*pszObjPath == '\\')

{

psz = &pszObjPath[1];

pnsScope = gpnsNameSpaceRoot;

}

1: kd> dv

pszObjPath = 0xf742c09c "\"

pnsScope = 0x00000000

ppns = 0xf789a1b8

dwfNS = 1

psz = 0xf742c09d ""

rc = 0n-1073741772

fSearchUp = 0x00 ''

pns = 0x00000000

dwName = 0xf741da27

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj * *)0xf789a1b8)

((ACPI!_NSObj * *)0xf789a1b8) : 0xf789a1b8 [Type: _NSObj * *]

0x0 [Type: _NSObj *]

1: kd> p

eax=c0000034 ebx=f742c09c ecx=f789a1b8 edx=f742c09c esi=00000000 edi=00000000

eip=f741dc16 esp=f789a180 ebp=f789a190 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!GetNameSpaceObject+0x1f2:

f741dc16 c9 leave

else if ((*pszName == '\0') || (rc == AMLIERR_OBJ_NOT_FOUND))

{

rc = STATUS_SUCCESS;

//

// Are we creating root? 是不是创建ROOT对象?

//

if (STRCMP(pszName, "\\") == 0)

{

ASSERT(gpnsNameSpaceRoot == NULL);

ASSERT(powner == NULL);

if ((pns = NEWNSOBJ(pheap, sizeof(NSOBJ))) == NULL)

{

rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,

("CreateNameSpaceObject: fail to allocate name space object"));

}

else

{

MEMZERO(pns, sizeof(NSOBJ));

pns->dwNameSeg = NAMESEG_ROOT;

gpnsNameSpaceRoot = pns;

InsertOwnerObjList(powner, pns);

}

}

1: kd> p

eax=89da3024 ebx=f7432a20 ecx=00000000 edx=00000000 esi=80ae2bca edi=89da3024

eip=f741dddb esp=f789a1a8 ebp=f789a1bc iopl=0 nv up ei ng nz na pe nc

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

ACPI!CreateNameSpaceObject+0x1c3:

f741dddb 0f842e010000 je ACPI!CreateNameSpaceObject+0x2f7 (f741df0f) [br=0]

1: kd> dt _nsobj 89da3024

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : (null)

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

MEMZERO(pns, sizeof(NSOBJ));

pns->dwNameSeg = NAMESEG_ROOT;

gpnsNameSpaceRoot = pns;

InsertOwnerObjList(powner, pns);

1: kd> dt _nsobj 89da3024

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : (null)

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f5f5f5c

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> x acpi!gpnsNameSpaceRoot

f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024

1: kd> t

eax=89da3024 ebx=f7432a20 ecx=00000000 edx=00000000 esi=80ae2bca edi=89da305c

eip=f741acfc esp=f789a19c ebp=f789a1bc 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!InsertOwnerObjList:

f741acfc 55 push ebp

1: kd> kc

00 ACPI!InsertOwnerObjList

01 ACPI!CreateNameSpaceObject

02 ACPI!AMLIInitialize

03 ACPI!ACPIInitializeAMLI

04 ACPI!ACPIInitialize

05 ACPI!ACPIInitStartACPI

06 ACPI!ACPIRootIrpStartDevice

07 ACPI!ACPIDispatchIrp

08 nt!IofCallDriver

09 nt!IopSynchronousCall

0a nt!IopStartDevice

0b nt!PipProcessStartPhase1

0c nt!PipProcessDevNodeTree

0d nt!PipDeviceActionWorker

0e nt!PipRequestDeviceAction

0f nt!IopInitializeBootDrivers

10 nt!IoInitSystem

11 nt!Phase1Initialization

12 nt!PspSystemThreadStartup

13 nt!KiThreadStartup

1: kd> dv

powner = 0x00000000

pnsObj = 0x89da3024

VOID LOCAL InsertOwnerObjList(POBJOWNER powner, PNSOBJ pnsObj)

{

TRACENAME("INSERTOWNEROBJLIST")

ENTER(3, ("InsertOwnerObjList(powner=%x,pnsObj=%x)\n",

powner, pnsObj));

pnsObj->hOwner = (HANDLE)powner;

if (powner != NULL)

{

pnsObj->pnsOwnedNext = powner->pnsObjList;

powner->pnsObjList = pnsObj;

}

EXIT(3, ("InsertOwnerObjList!\n"));

} //InsertOwnerObjList

1: kd> dt _nsobj 89da3024

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : (null)

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f5f5f5c

+0x014 hOwner : (null) pnsObj->hOwner = (HANDLE)powner;=0

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> dv apszDefinedRootObjs

apszDefinedRootObjs = char *[5]

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!char * (*)[5])0xfffffffff7438cb0))

(*((ACPI!char * (*)[5])0xfffffffff7438cb0)) [Type: char * [5]]

0\] : 0xf742b824 : "_GPE" \[Type: char \*

1\] : 0xf742b820 : "_PR" \[Type: char \*

2\] : 0xf742b81c : "_SB" \[Type: char \*

3\] : 0xf742b818 : "_SI" \[Type: char \*

4\] : 0xf742b814 : "_TZ" \[Type: char \*

if ((rc = CreateNameSpaceObject(gpheapGlobal, NAMESTR_ROOT, NULL,

NULL, NULL, 0)) == STATUS_SUCCESS)

{

for (i = 0; i < NUM_DEFINED_ROOT_OBJS; ++i)

{

if ((rc = CreateNameSpaceObject(gpheapGlobal,

apszDefinedRootObjs[i],

NULL, NULL, NULL, 0)) !=

STATUS_SUCCESS)

{

break;

}

}

}

1: kd> t

Breakpoint 47 hit

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000000 edi=00000000

eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 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!CreateNameSpaceObject:

f741dc18 55 push ebp

1: kd> dv

pheap = 0x89da3000

pszName = 0xf742b824 "_GPE"

pnsScope = 0x00000000

1: kd> gu

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000000 edi=00000000

eip=f7414b47 esp=f789a1c4 ebp=f789a1f0 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!AMLIInitialize+0x168:

f7414b47 83c418 add esp,18h

1: kd> dv apszDefinedRootObjs

apszDefinedRootObjs = char *[5]

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!char * (*)[5])0xfffffffff7438cb0))

(*((ACPI!char * (*)[5])0xfffffffff7438cb0)) [Type: char * [5]]

0\] : 0xf742b824 : "_GPE" \[Type: char \*

1\] : 0xf742b820 : "_PR" \[Type: char \*

2\] : 0xf742b81c : "_SB" \[Type: char \*

3\] : 0xf742b818 : "_SI" \[Type: char \*

4\] : 0xf742b814 : "_TZ" \[Type: char \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!char *)0xf742b824)

((ACPI!char *)0xf742b824) : 0xf742b824 : "_GPE" [Type: char *]

1: kd> x acpi!gpnsNameSpaceRoot

f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3024)

((ACPI!_NSObj *)0x89da3024) : 0x89da3024 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x0 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x89da3068 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x5f5f5f5c \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3068)

((ACPI!_NSObj *)0x89da3068) : 0x89da3068 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x89da3024 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4550475f \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dt HEAPOBJHDR 0x89da3068-c

ACPI!HEAPOBJHDR

+0x000 dwSig : 0x4f534e48

+0x004 dwLen : 0x44

+0x008 pheap : 0x89da3000 _heap

+0x00c list : _List

1: kd> db 0x89da3068-c

89da305c 48 4e 53 4f 44 00 00 00-00 30 da 89 68 30 da 89 HNSOD....0..h0..

89da306c 68 30 da 89 24 30 da 89-00 00 00 00 5f 47 50 45 h0..$0......_GPE

89da307c 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

1: kd> db 0x89da3068+10

89da3078 5f 47 50 45 00 00 00 00-00 00 00 00 00 00 00 00 _GPE............

下面是第二个:

1: kd> g

Breakpoint 47 hit

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000004 edi=00000000

eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 iopl=0 nv up ei ng nz na pe cy

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

ACPI!CreateNameSpaceObject:

f741dc18 55 push ebp

1: kd> dv

pheap = 0x89da3000

pszName = 0xf742b820 "_PR"

pnsScope = 0x00000000

powner = 0x00000000

ppns = 0x00000000

dwfNS = 0

pns = 0x00000008

rc = 0n-146678759

pnsParent = 0xf742b820

iLen = 0n0

1: kd> gu

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000004 edi=00000000

eip=f7414b47 esp=f789a1c4 ebp=f789a1f0 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!AMLIInitialize+0x168:

f7414b47 83c418 add esp,18h

1: kd> x acpi!gpnsNameSpaceRoot

f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3024)

((ACPI!_NSObj *)0x89da3024) : 0x89da3024 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x0 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x89da3068 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x5f5f5f5c \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3068)

((ACPI!_NSObj *)0x89da3068) : 0x89da3068 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x89da3024 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4550475f \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_List *)0x89da3068))

(*((ACPI!_List *)0x89da3068)) [Type: _List]

+0x000\] plistPrev : 0x89da30ac \[Type: _List \*\] 上一个,因为只有两个节点,所以。 \[+0x004\] plistNext : 0x89da30ac \[Type: _List \*\] 下一个 1: kd\> dt _nsobj 0x89da30ac ACPI!_NSObj +0x000 list : _List +0x008 pnsParent : 0x89da3024 _NSObj +0x00c pnsFirstChild : (null) +0x010 dwNameSeg : 0x5f52505f +0x014 hOwner : (null) +0x018 pnsOwnedNext : (null) +0x01c ObjData : _ObjData +0x030 Context : (null) +0x034 dwRefCount : 0 1: kd\> db 0x89da30ac+10 89da30bc 5f 50 52 5f 00 00 00 00-00 00 00 00 00 00 00 00 _PR_............ 89da30cc 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 下面是第三个: 1: kd\> g Breakpoint 47 hit eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000008 edi=00000000 eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 iopl=0 nv up ei ng nz na po cy cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000283 ACPI!CreateNameSpaceObject: f741dc18 55 push ebp 1: kd\> dv pheap = 0x89da3000 pszName = 0xf742b81c "_SB" pnsScope = 0x00000000 powner = 0x00000000 ppns = 0x00000000 dwfNS = 0 pns = 0x00000008 rc = 0n-146678759 pnsParent = 0xf742b81c iLen = 0n0 1: kd\> gu eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000008 edi=00000000 eip=f7414b47 esp=f789a1c4 ebp=f789a1f0 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!AMLIInitialize+0x168: f7414b47 83c418 add esp,18h 1: kd\> x acpi!gpnsNameSpaceRoot f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024 1: kd\> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj \*)0x89da3024) ((ACPI!_NSObj \*)0x89da3024) : 0x89da3024 \[Type: _NSObj \*

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x0 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x89da3068 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x5f5f5f5c \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3068)

((ACPI!_NSObj *)0x89da3068) : 0x89da3068 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x89da3024 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4550475f \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_List *)0x89da3068))

(*((ACPI!_List *)0x89da3068)) [Type: _List]

+0x000\] plistPrev : 0x89da30f0 \[Type: _List \*

+0x004\] plistNext : 0x89da30ac \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da30ac)

((ACPI!_List *)0x89da30ac) : 0x89da30ac [Type: _List *]

+0x000\] plistPrev : 0x89da3068 \[Type: _List \*

+0x004\] plistNext : 0x89da30f0 \[Type: _List \*

1: kd> dt _nsobj 0x89da30f0

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f42535f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da30f0+10

89da3100 5f 53 42 5f 00 00 00 00-00 00 00 00 00 00 00 00 SB............

下面是第四个:

1: kd> g

Breakpoint 47 hit

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=0000000c edi=00000000

eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 iopl=0 nv up ei ng nz na po cy

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

ACPI!CreateNameSpaceObject:

f741dc18 55 push ebp

1: kd> dv

pheap = 0x89da3000

pszName = 0xf742b818 "_SI"

pnsScope = 0x00000000

powner = 0x00000000

ppns = 0x00000000

dwfNS = 0

pns = 0x00000008

rc = 0n-146678759

pnsParent = 0xf742b818

iLen = 0n0

1: kd> gu

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=0000000c edi=00000000

eip=f7414b47 esp=f789a1c4 ebp=f789a1f0 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!AMLIInitialize+0x168:

f7414b47 83c418 add esp,18h

1: kd> x acpi!gpnsNameSpaceRoot

f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3024)

((ACPI!_NSObj *)0x89da3024) : 0x89da3024 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x0 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x89da3068 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x5f5f5f5c \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3068)

((ACPI!_NSObj *)0x89da3068) : 0x89da3068 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x89da3024 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4550475f \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_List *)0x89da3068))

(*((ACPI!_List *)0x89da3068)) [Type: _List]

+0x000\] plistPrev : 0x89da3134 \[Type: _List \*

+0x004\] plistNext : 0x89da30ac \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da30ac)

((ACPI!_List *)0x89da30ac) : 0x89da30ac [Type: _List *]

+0x000\] plistPrev : 0x89da3068 \[Type: _List \*

+0x004\] plistNext : 0x89da30f0 \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da30f0)

((ACPI!_List *)0x89da30f0) : 0x89da30f0 [Type: _List *]

+0x000\] plistPrev : 0x89da30ac \[Type: _List \*

+0x004\] plistNext : 0x89da3134 \[Type: _List \*

1: kd> dt _nsobj 0x89da3134

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f49535f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da3134+10

89da3144 5f 53 49 5f 00 00 00 00-00 00 00 00 00 00 00 00 SI............

下面是第五个:

1: kd> g

Breakpoint 47 hit

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000010 edi=00000000

eip=f741dc18 esp=f789a1c0 ebp=f789a1f0 iopl=0 nv up ei ng nz ac pe cy

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

ACPI!CreateNameSpaceObject:

f741dc18 55 push ebp

1: kd> dv

pheap = 0x89da3000

pszName = 0xf742b814 "_TZ"

pnsScope = 0x00000000

powner = 0x00000000

ppns = 0x00000000

dwfNS = 0

pns = 0x00000008

rc = 0n-146678759

pnsParent = 0xf742b814

iLen = 0n0

1: kd> gu

eax=00000000 ebx=00000000 ecx=89da3024 edx=00000000 esi=00000010 edi=00000000

eip=f7414b47 esp=f789a1c4 ebp=f789a1f0 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!AMLIInitialize+0x168:

f7414b47 83c418 add esp,18h

1: kd> x acpi!gpnsNameSpaceRoot

f743a8dc ACPI!gpnsNameSpaceRoot = 0x89da3024

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3024)

((ACPI!_NSObj *)0x89da3024) : 0x89da3024 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x0 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x89da3068 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x5f5f5f5c \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_NSObj *)0x89da3068)

((ACPI!_NSObj *)0x89da3068) : 0x89da3068 [Type: _NSObj *]

+0x000\] list \[Type: _List

+0x008\] pnsParent : 0x89da3024 \[Type: _NSObj \*

+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*

+0x010\] dwNameSeg : 0x4550475f \[Type: unsigned long

+0x014\] hOwner : 0x0 \[Type: void \*

+0x018\] pnsOwnedNext : 0x0 \[Type: _NSObj \*

+0x01c\] ObjData \[Type: _ObjData

+0x030\] Context : 0x0 \[Type: void \*

+0x034\] dwRefCount : 0x0 \[Type: unsigned long

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_List *)0x89da3068))

(*((ACPI!_List *)0x89da3068)) [Type: _List]

+0x000\] plistPrev : 0x89da3178 \[Type: _List \*

+0x004\] plistNext : 0x89da30ac \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da30ac)

((ACPI!_List *)0x89da30ac) : 0x89da30ac [Type: _List *]

+0x000\] plistPrev : 0x89da3068 \[Type: _List \*

+0x004\] plistNext : 0x89da30f0 \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da30f0)

((ACPI!_List *)0x89da30f0) : 0x89da30f0 [Type: _List *]

+0x000\] plistPrev : 0x89da30ac \[Type: _List \*

+0x004\] plistNext : 0x89da3134 \[Type: _List \*

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ACPI!_List *)0x89da3134)

((ACPI!_List *)0x89da3134) : 0x89da3134 [Type: _List *]

+0x000\] plistPrev : 0x89da30f0 \[Type: _List \*

+0x004\] plistNext : 0x89da3178 \[Type: _List \*

1: kd> dt _nsobj 0x89da3178

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f5a545f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da3178+10

89da3188 5f 54 5a 5f 00 00 00 00-00 00 00 00 00 00 00 00 TZ............

if ((rc == STATUS_SUCCESS) &&

((rc = CreateNameSpaceObject(gpheapGlobal, "_REV", NULL, NULL,

&pns, 0)) == STATUS_SUCCESS))

{

pns->ObjData.dwDataType = OBJTYPE_INTDATA;

pns->ObjData.uipDataValue = AMLI_REVISION;

}

创建NSOBJ _REV

1: kd> dt _nsobj 0x89da31bc

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5645525f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da31bc+10

89da31cc 5f 52 45 56 00 00 00 00-00 00 00 00 00 00 00 00 _REV........

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_ObjData *)0xffffffff89da31d8))

(*((ACPI!_ObjData *)0xffffffff89da31d8)) [Type: _ObjData]

+0x000\] dwfData : 0x0 \[Type: unsigned short

+0x002\] dwDataType : 0x1 \[Type: unsigned short

+0x004\] dwRefCount : 0x0 \[Type: unsigned long

+0x004\] pdataBase : 0x0 \[Type: _ObjData \*

+0x008\] dwDataValue : 0x1 \[Type: unsigned long

+0x008\] uipDataValue : 0x1 \[Type: unsigned long

+0x008\] pnsAlias : 0x1 \[Type: _NSObj \*

+0x008\] pdataAlias : 0x1 \[Type: _ObjData \*

+0x008\] powner : 0x1 \[Type: void \*

+0x00c\] dwDataLen : 0x0 \[Type: unsigned long

+0x010\] pbDataBuff : 0x0 \[Type: unsigned char \*

if ((rc == STATUS_SUCCESS) &&

((rc = CreateNameSpaceObject(gpheapGlobal, "_OS", NULL, NULL,

&pns, 0)) == STATUS_SUCCESS))

{

pns->ObjData.dwDataType = OBJTYPE_STRDATA;

pns->ObjData.dwDataLen = STRLEN(gpszOSName) + 1;

if ((pns->ObjData.pbDataBuff = NEWSDOBJ(gpheapGlobal,

pns->ObjData.dwDataLen))

== NULL)

{

rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,

("AMLIInitialize: failed to allocate \\_OS name object"));

}

else

{

MEMCPY(pns->ObjData.pbDataBuff, gpszOSName,

pns->ObjData.dwDataLen);

}

}

1: kd> dt _nsobj 0x89da3200

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f534f5f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da3200+10

89da3210 5f 4f 53 5f 00 00 00 00-00 00 00 00 00 00 00 00 OS.......

1: kd> x acpi!gpszOSName

f7438000 ACPI!gpszOSName = 0xf742b28c "Microsoft Windows NT"

1: kd> dt ACPI!_ObjData 89da321c

+0x000 dwfData : 0

+0x002 dwDataType : 2 pns->ObjData.dwDataType = OBJTYPE_STRDATA;

+0x004 dwRefCount : 0

+0x004 pdataBase : (null)

+0x008 dwDataValue : 0

+0x008 uipDataValue : 0

+0x008 pnsAlias : (null)

+0x008 pdataAlias : (null)

+0x008 powner : (null)

+0x00c dwDataLen : 0x15

+0x010 pbDataBuff : 0x89da3244 "Microsoft Windows NT" gpszOSName

if ((rc == STATUS_SUCCESS) &&

((rc = CreateNameSpaceObject(gpheapGlobal,"_OSI", NULL, NULL,

&pns, 0)) == STATUS_SUCCESS))

{

pns->ObjData.dwDataType = OBJTYPE_METHOD;

pns->ObjData.dwDataLen = sizeof(METHODOBJ) + sizeof(OSIAML) - sizeof(UCHAR);

if ((pns->ObjData.pbDataBuff = NEWSDOBJ(gpheapGlobal,

pns->ObjData.dwDataLen))

== NULL)

{

rc = AMLI_LOGERR(AMLIERR_OUT_OF_MEM,

("AMLIInitiaize: failed to allocate \\_OSI name object"));

}

else

{

MEMZERO(pns->ObjData.pbDataBuff, pns->ObjData.dwDataLen);

//This method has one argument

((PMETHODOBJ)(pns->ObjData.pbDataBuff))->bMethodFlags |= 0x1;

MEMCPY(((PMETHODOBJ)(pns->ObjData.pbDataBuff))->abCodeBuff, (PUCHAR)OSIAML,

sizeof(OSIAML));

}

}

1: kd> dt _nsobj 0x89da3268

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x49534f5f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da3268+10

89da3278 5f 4f 53 49 00 00 00 00-00 00 00 00 00 00 00 00 _OSI...

1: kd> x acpi!OSIAML

f7438cac ACPI!OSIAML = unsigned char [3] "???"

1: kd> db f7438cac

f7438cac a4 ca 68 00 24 b8 42 f7-20 b8 42 f7 1c b8 42 f7 ..h.$.B. .B...B.

f7438cbc 18 b8 42 f7 14 b8 42 f7-00 00 00 00 00 20 00 00 ..B...B...... ..

f7438ccc 00 00 01 00 78 c7 42 f7-06 00 00 00 74 c7 42 f7 ....x.B.....t.B.

f7438cdc 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

f7438cec e2 58 42 f7 6c c7 42 f7-08 00 00 00 68 c7 42 f7 .XB.l.B.....h.B.

f7438cfc 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

f7438d0c e3 59 42 f7 60 c7 42 f7-10 00 00 00 5c c7 42 f7 .YB.`.B.....\.B.

f7438d1c 01 00 00 00 01 00 00 00-00 00 00 00 00 00 00 00 ................

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!unsigned char (*)[3])0xfffffffff7438cac))

(*((ACPI!unsigned char (*)[3])0xfffffffff7438cac)) [Type: unsigned char [3]]

0\] : 0xa4 \[Type: unsigned char

1\] : 0xca \[Type: unsigned char

2\] : 0x68 \[Type: unsigned char

pns->ObjData.dwDataType = OBJTYPE_METHOD;

pns->ObjData.dwDataLen = sizeof(METHODOBJ) + sizeof(OSIAML)

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_ObjData *)0xffffffff89da3284))

(*((ACPI!_ObjData *)0xffffffff89da3284)) [Type: _ObjData]

+0x000\] dwfData : 0x0 \[Type: unsigned short

+0x002\] dwDataType : 0x8 \[Type: unsigned short

+0x004\] dwRefCount : 0x0 \[Type: unsigned long

+0x004\] pdataBase : 0x0 \[Type: _ObjData \*

+0x008\] dwDataValue : 0x0 \[Type: unsigned long

+0x008\] uipDataValue : 0x0 \[Type: unsigned long

+0x008\] pnsAlias : 0x0 \[Type: _NSObj \*

+0x008\] pdataAlias : 0x0 \[Type: _ObjData \*

+0x008\] powner : 0x0 \[Type: void \*

+0x00c\] dwDataLen : 0x16 \[Type: unsigned long

+0x010\] pbDataBuff : 0x0 \[Type: unsigned char \*

1: kd> dt _METHODOBJ 0x89da32ac

ACPI!_MethodObj

+0x000 Mutex : _MutexObj

+0x010 bMethodFlags : 0 ''

+0x011 abCodeBuff : [1] ""

else

{

MEMZERO(pns->ObjData.pbDataBuff, pns->ObjData.dwDataLen);

//This method has one argument

((PMETHODOBJ)(pns->ObjData.pbDataBuff))->bMethodFlags |= 0x1;

MEMCPY(((PMETHODOBJ)(pns->ObjData.pbDataBuff))->abCodeBuff, (PUCHAR)OSIAML,

sizeof(OSIAML));

}

1: kd> dt _nsobj 0x89da3268

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x49534f5f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_ObjData *)0xffffffff89da3284))

(*((ACPI!_ObjData *)0xffffffff89da3284)) [Type: _ObjData]

+0x000\] dwfData : 0x0 \[Type: unsigned short

+0x002\] dwDataType : 0x8 \[Type: unsigned short

+0x004\] dwRefCount : 0x0 \[Type: unsigned long

+0x004\] pdataBase : 0x0 \[Type: _ObjData \*

+0x008\] dwDataValue : 0x0 \[Type: unsigned long

+0x008\] uipDataValue : 0x0 \[Type: unsigned long

+0x008\] pnsAlias : 0x0 \[Type: _NSObj \*

+0x008\] pdataAlias : 0x0 \[Type: _ObjData \*

+0x008\] powner : 0x0 \[Type: void \*

+0x00c\] dwDataLen : 0x16 \[Type: unsigned long

+0x010\] pbDataBuff : 0x89da32ac : 0x0 \[Type: unsigned char \*

1: kd> dt _METHODOBJ 0x89da32ac

ACPI!_MethodObj

+0x000 Mutex : _MutexObj

+0x010 bMethodFlags : 0x1 ''

+0x011 abCodeBuff : [1] "??????"

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!unsigned char (*)[1])0xffffffff89da32bd))

(*((ACPI!unsigned char (*)[1])0xffffffff89da32bd)) [Type: unsigned char [1]]

0\] : 0xa4 \[Type: unsigned char

1: kd> db 89da32bd

89da32bd a4 ca 68 00 00 00 00 00-00 00 00 00 00 00 00 00 ..h.............

89da32cd 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

if ((rc == STATUS_SUCCESS) &&

((rc = CreateNameSpaceObject(gpheapGlobal, "_GL", NULL, NULL,

&pns, 0)) == STATUS_SUCCESS))

{

pns->ObjData.dwfData = DATAF_GLOBAL_LOCK;

rc = InitMutex(gpheapGlobal, pns, 0);

}

1: kd> dt _nsobj 0x89da32d0

ACPI!_NSObj

+0x000 list : _List

+0x008 pnsParent : 0x89da3024 _NSObj

+0x00c pnsFirstChild : (null)

+0x010 dwNameSeg : 0x5f4c475f

+0x014 hOwner : (null)

+0x018 pnsOwnedNext : (null)

+0x01c ObjData : _ObjData

+0x030 Context : (null)

+0x034 dwRefCount : 0

1: kd> db 0x89da32d0+10

89da32e0 5f 47 4c 5f 00 00 00 00-00 00 00 00 00 00 00 00 GL............

89da32f0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .

1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ACPI!_ObjData *)0xffffffff89da32ec))

(*((ACPI!_ObjData *)0xffffffff89da32ec)) [Type: _ObjData]

+0x000\] dwfData : 0x2 \[Type: unsigned short

+0x002\] dwDataType : 0x9 \[Type: unsigned short

+0x004\] dwRefCount : 0x0 \[Type: unsigned long

+0x004\] pdataBase : 0x0 \[Type: _ObjData \*

+0x008\] dwDataValue : 0x0 \[Type: unsigned long

+0x008\] uipDataValue : 0x0 \[Type: unsigned long

+0x008\] pnsAlias : 0x0 \[Type: _NSObj \*

+0x008\] pdataAlias : 0x0 \[Type: _ObjData \*

+0x008\] powner : 0x0 \[Type: void \*

+0x00c\] dwDataLen : 0x10 \[Type: unsigned long

+0x010\] pbDataBuff : 0x89da3314 : 0x0 \[Type: unsigned char \*

1: kd> g

Breakpoint 47 hit

eax=89da334c ebx=89defef8 ecx=89da330a edx=00000000 esi=89defed8 edi=89dee000

eip=f741dc18 esp=f789a0ec ebp=f789a114 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!CreateNameSpaceObject:

f741dc18 55 push ebp

0: kd> kc

00 ACPI!CreateNameSpaceObject

01 ACPI!Name

02 ACPI!ParseTerm

03 ACPI!RunContext

04 ACPI!InsertReadyQueue

05 ACPI!RestartContext

06 ACPI!SyncLoadDDB

07 ACPI!AMLILoadDDB

08 ACPI!ACPIInitializeDDB

09 ACPI!ACPIInitializeDDBs

0a ACPI!ACPIInitialize

0b ACPI!ACPIInitStartACPI

0c ACPI!ACPIRootIrpStartDevice

0d ACPI!ACPIDispatchIrp

0e nt!IofCallDriver

0f nt!IopSynchronousCall

10 nt!IopStartDevice

11 nt!PipProcessStartPhase1

12 nt!PipProcessDevNodeTree

13 nt!PipDeviceActionWorker

14 nt!PipRequestDeviceAction

15 nt!IopInitializeBootDrivers

16 nt!IoInitSystem

17 nt!Phase1Initialization

18 nt!PspSystemThreadStartup

19 nt!KiThreadStartup

0: kd> dv

pheap = 0x89da3000

pszName = 0x89da3380 "\GPIC"

pnsScope = 0x89da3024

powner = 0x89da3330

ppns = 0x89defef8

dwfNS = 0

pns = 0x00000008

rc = 0n-146678759

pnsParent = 0x89da3380

iLen = 0n-1982189532