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