hal!HaliInitPnpDriver函数分析和对Root-ACPI_HAL-0000的处理
1: kd> g
Breakpoint 4 hit
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=89dd4020 edi=0000001c
eip=80a2ec74 esp=f789a378 ebp=f789a584 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PipSetDevNodeState:
80a2ec74 55 push ebp
1: kd> kc
00 nt!PipSetDevNodeState
01 nt!IoReportDetectedDevice
02 hal!HalpDriverEntry
03 nt!IoCreateDriver
04 hal!HaliInitPnpDriver
05 nt!IoInitSystem
06 nt!Phase1Initialization
07 nt!PspSystemThreadStartup
08 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89df8008
State = DeviceNodeStartPostWork (0n775)
OldState = 0x00000000
oldIrql = 0x89 ''
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_NODE *)0x89df8008)
((ntkrnlmp!_DEVICE_NODE *)0x89df8008) : 0x89df8008 [Type: _DEVICE_NODE *]
+0x000\] Sibling : 0x89df8c98 \[Type: _DEVICE_NODE \*
+0x004\] Child : 0x0 \[Type: _DEVICE_NODE \*
+0x008\] Parent : 0x89db9ac0 \[Type: _DEVICE_NODE \*
+0x00c\] LastChild : 0x0 \[Type: _DEVICE_NODE \*
+0x010\] Level : 0x1 \[Type: unsigned long
+0x014\] Notify : 0x0 \[Type: _PO_DEVICE_NOTIFY \*
+0x018\] State : DeviceNodeInitialized (770) \[Type: _PNP_DEVNODE_STATE
+0x01c\] PreviousState : DeviceNodeUninitialized (769) \[Type: _PNP_DEVNODE_STATE
+0x020\] StateHistory \[Type: _PNP_DEVNODE_STATE \[20\]
+0x070\] StateHistoryEntry : 0x1 \[Type: unsigned long
+0x074\] CompletionStatus : 0 \[Type: long
+0x078\] PendingIrp : 0x0 \[Type: _IRP \*
+0x07c\] Flags : 0x111 \[Type: unsigned long
+0x080\] UserFlags : 0x0 \[Type: unsigned long
+0x084\] Problem : 0x0 \[Type: unsigned long
+0x088\] PhysicalDeviceObject : 0x89db98a0 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x08c\] ResourceList : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x090\] ResourceListTranslated : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x094\] InstancePath : "Root\\ACPI_HAL\\0000" \[Type: _UNICODE_STRING
+0x09c\] ServiceName : "" \[Type: _UNICODE_STRING
+0x0a4\] DuplicatePDO : 0x0 \[Type: _DEVICE_OBJECT \*
+0x0a8\] ResourceRequirements : 0x0 \[Type: _IO_RESOURCE_REQUIREMENTS_LIST \*
+0x0ac\] InterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b0\] BusNumber : 0xffffffff \[Type: unsigned long
+0x0b4\] ChildInterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b8\] ChildBusNumber : 0xffffffff \[Type: unsigned long
+0x0bc\] ChildBusTypeIndex : 0xffff \[Type: unsigned short
+0x0be\] RemovalPolicy : 0x0 \[Type: unsigned char
+0x0bf\] HardwareRemovalPolicy : 0x0 \[Type: unsigned char
+0x0c0\] TargetDeviceNotify \[Type: _LIST_ENTRY
+0x0c8\] DeviceArbiterList \[Type: _LIST_ENTRY
+0x0d0\] DeviceTranslatorList \[Type: _LIST_ENTRY
+0x0d8\] NoTranslatorMask : 0x0 \[Type: unsigned short
+0x0da\] QueryTranslatorMask : 0x0 \[Type: unsigned short
+0x0dc\] NoArbiterMask : 0x0 \[Type: unsigned short
+0x0de\] QueryArbiterMask : 0x0 \[Type: unsigned short
+0x0e0\] OverUsed1 \[Type: __unnamed
+0x0e4\] OverUsed2 \[Type: __unnamed
+0x0e8\] BootResources : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x0ec\] CapabilityFlags : 0x0 \[Type: unsigned long
+0x0f0\] DockInfo \[Type: __unnamed
+0x100\] DisableableDepends : 0x0 \[Type: unsigned long
+0x104\] PendedSetInterfaceState \[Type: _LIST_ENTRY
+0x10c\] LegacyBusListEntry \[Type: _LIST_ENTRY
1: kd> kv
ChildEBP RetAddr Args to Child
00 f789a374 80c7c304 89df8008 00000307 00000000 nt!PipSetDevNodeState (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\devnode.c @ 288]
01 f789a584 8050c33d 00000000 00000000 00ffffff nt!IoReportDetectedDevice+0xed0 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpioapi.c @ 2168]
02 f789a5bc 80c61625 89df5280 00000000 80077000 hal!HalpDriverEntry+0x87 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halacpi\ixpnpdrv.c @ 452]
03 f789a67c 8050c48e 89df5280 8050c2b6 80077000 nt!IoCreateDriver+0x1ff (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\iosubs.c @ 14270]
04 f789a69c 80e65571 00034000 00000000 00000000 hal!HaliInitPnpDriver+0x5c (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halacpi\ixpnpdrv.c @ 319]
05 f789a838 80e632fd 80077000 00000000 89dd4020 nt!IoInitSystem+0x6b5 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\ioinit.c @ 617]
06 f789adac 80d391f0 80077000 00000000 00000000 nt!Phase1Initialization+0x9b3 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\init\init.c @ 2221]
07 f789addc 80b00d52 80e6294a 80077000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
08 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
windbg> .open -a ffffffff80c7c304
1: kd> !objdect \driver
No export objdect found
1: kd> !object \driver
Object: e1284930 Type: (89dd5e70) Directory
ObjectHeader: e1284918 (old version)
HandleCount: 0 PointerCount: 3
Directory Object: e1002aa0 Name: Driver
Hash Address Type Name
18 89df5280 Driver ACPI_HAL
33 89db9d28 Driver PnpManager
1: kd> !object 89df5280
Object: 89df5280 Type: (89df9ac0) Driver
ObjectHeader: 89df5268 (old version)
HandleCount: 0 PointerCount: 514
Directory Object: e1284930 Name: ACPI_HAL
1: kd> !devobj 89df5280
89df5280: is not a device object
1: kd> !drvobj 89df5280
Driver object (89df5280) is for:
\Driver\ACPI_HAL
Driver Extension List: (id , addr)
Device Object list:
Breakpoint 27 hit
eax=00000000 ebx=00000008 ecx=00000000 edx=00000000 esi=00000000 edi=80b1f6f8
eip=80a2dd1c esp=f789a5ec ebp=f789a600 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PipDeviceActionWorker:
80a2dd1c 55 push ebp
1: kd> kc
00 nt!PipDeviceActionWorker
01 nt!PipRequestDeviceAction
02 nt!IopInitializePlugPlayServices
03 nt!IoInitSystem
04 nt!Phase1Initialization
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
1: kd> dv
Context = 0x00000000
addContext = struct _ADD_CONTEXT
dereferenceDevice = 0x00 ''
status = 0n-2136810211
bootProcess = 0x00 ''
assignResources = 0x00 ''
1: kd> x IopPnpEnumerationRequestList
1: kd> x nt!IopPnpEnumerationRequestList
80b1f5f8 nt!IopPnpEnumerationRequestList = struct _LIST_ENTRY [ 0x89df9368 - 0x89dc7b78 ]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ntkrnlmp!_LIST_ENTRY *)0xffffffff80b1f5f8))
(*((ntkrnlmp!_LIST_ENTRY *)0xffffffff80b1f5f8)) [Type: _LIST_ENTRY]
+0x000\] Flink : 0x89df9368 \[Type: _LIST_ENTRY \*
+0x004\] Blink : 0x89dc7b78 \[Type: _LIST_ENTRY \*
1: kd> dt _PI_DEVICE_REQUEST 0x89df9368
nt!_PI_DEVICE_REQUEST
+0x000 ListEntry : _LIST_ENTRY [ 0x89dc7b78 - 0x80b1f5f8 ]
+0x008 DeviceObject : 0x89db98a0 _DEVICE_OBJECT
+0x00c RequestType : 6 ( ReenumerateDeviceOnly )
+0x010 ReorderingBarrier : 0 ''
+0x014 RequestArgument : 0
+0x018 CompletionEvent : (null)
+0x01c CompletionStatus : (null)
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0)
((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0) : 0x89db98a0 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
\
Flags : 0x1040
UpperDevices : Immediately above is Device for "\Driver\ACPI_HAL" [at 0x89db5dd8]
LowerDevices : None
Driver : 0x89db9d28 : Driver "\Driver\PnpManager" [Type: _DRIVER_OBJECT *]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 -n (*((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0))
(*((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0)) : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT]
+0x000\] Type : 3 \[Type: short
+0x002\] Size : 0xc0 \[Type: unsigned short
+0x004\] ReferenceCount : 0 \[Type: long
+0x008\] DriverObject : 0x89db9d28 : Driver "\\Driver\\PnpManager" \[Type: _DRIVER_OBJECT \*
+0x00c\] NextDevice : 0x89db9c00 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x010\] AttachedDevice : 0x89db5dd8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x014\] CurrentIrp : 0x0 \[Type: _IRP \*
+0x018\] Timer : 0x0 \[Type: _IO_TIMER \*
+0x01c\] Flags : 0x1040 \[Type: unsigned long
+0x020\] Characteristics : 0x80 \[Type: unsigned long
+0x024\] Vpb : 0x0 \[Type: _VPB \*
+0x028\] DeviceExtension : 0x89db9958 \[Type: void \*
+0x02c\] DeviceType : 0x4 \[Type: unsigned long
+0x030\] StackSize : 1 \[Type: char
+0x034\] Queue \[Type: __unnamed
+0x05c\] AlignmentRequirement : 0x0 \[Type: unsigned long
+0x060\] DeviceQueue \[Type: _KDEVICE_QUEUE
+0x074\] Dpc \[Type: _KDPC
+0x094\] ActiveThreadCount : 0x0 \[Type: unsigned long
+0x098\] SecurityDescriptor : 0xe12a48e8 \[Type: void \*
+0x09c\] DeviceLock \[Type: _KEVENT
+0x0ac\] SectorSize : 0x0 \[Type: unsigned short
+0x0ae\] Spare1 : 0x1 \[Type: unsigned short
+0x0b0\] DeviceObjectExtension : 0x89db9960 \[Type: _DEVOBJ_EXTENSION \*
+0x0b4\] Reserved : 0x0 \[Type: void \*
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVOBJ_EXTENSION *)0x89db9960)
((ntkrnlmp!_DEVOBJ_EXTENSION *)0x89db9960) : 0x89db9960 [Type: _DEVOBJ_EXTENSION *]
+0x000\] Type : 13 \[Type: short
+0x002\] Size : 0x0 \[Type: unsigned short
+0x004\] DeviceObject : 0x89db98a0 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x008\] PowerFlags : 0x0 \[Type: unsigned long
+0x00c\] Dope : 0x0 \[Type: _DEVICE_OBJECT_POWER_EXTENSION \*
+0x010\] ExtensionFlags : 0x0 \[Type: unsigned long
+0x014\] DeviceNode : 0x89df8008 \[Type: void \*
+0x018\] AttachedTo : 0x0 \[Type: _DEVICE_OBJECT \*
+0x01c\] StartIoCount : 0 \[Type: long
+0x020\] StartIoKey : 0 \[Type: long
+0x024\] StartIoFlags : 0x0 \[Type: unsigned long
+0x028\] Vpb : 0x0 \[Type: _VPB \*
1: kd> !devnode 0x89df8008
DevNode 0x89df8008 for PDO 0x89db98a0
Parent 0x89db9ac0 Sibling 0x89df8c98 Child 0000000000
InstancePath is "Root\ACPI_HAL\0000"
State = DeviceNodeStartPostWork (0x307)
Previous State = DeviceNodeInitialized (0x302)
StateHistory[01] = DeviceNodeInitialized (0x302)
StateHistory[00] = DeviceNodeUninitialized (0x301)
StateHistory[19] = Unknown State (0x0)
StateHistory[18] = Unknown State (0x0)
StateHistory[17] = Unknown State (0x0)
StateHistory[16] = Unknown State (0x0)
StateHistory[15] = Unknown State (0x0)
StateHistory[14] = Unknown State (0x0)
StateHistory[13] = Unknown State (0x0)
StateHistory[12] = Unknown State (0x0)
StateHistory[11] = Unknown State (0x0)
StateHistory[10] = Unknown State (0x0)
StateHistory[09] = Unknown State (0x0)
StateHistory[08] = Unknown State (0x0)
StateHistory[07] = Unknown State (0x0)
StateHistory[06] = Unknown State (0x0)
StateHistory[05] = Unknown State (0x0)
StateHistory[04] = Unknown State (0x0)
StateHistory[03] = Unknown State (0x0)
StateHistory[02] = Unknown State (0x0)
Flags (0x00000115) DNF_MADEUP, DNF_HAL_NODE,
DNF_ENUMERATED, DNF_NO_RESOURCE_REQUIRED
1: kd> g
Breakpoint 28 hit
eax=00000006 ebx=00000000 ecx=00000000 edx=00000000 esi=89df9368 edi=00000000
eip=80c95438 esp=f789a5c4 ebp=f789a5e8 iopl=0 nv up ei ng nz na pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000287
nt!PiProcessReenumeration:
80c95438 55 push ebp
1: kd> kc
00 nt!PiProcessReenumeration
01 nt!PipDeviceActionWorker
02 nt!PipRequestDeviceAction
03 nt!IopInitializePlugPlayServices
04 nt!IoInitSystem
05 nt!Phase1Initialization
06 nt!PspSystemThreadStartup
07 nt!KiThreadStartup
1: kd> dv
Request = 0x89df9368
addContext = struct _ADD_CONTEXT
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_PI_DEVICE_REQUEST *)0x89df9368)
((ntkrnlmp!_PI_DEVICE_REQUEST *)0x89df9368) : 0x89df9368 [Type: _PI_DEVICE_REQUEST *]
+0x000\] ListEntry \[Type: _LIST_ENTRY
+0x008\] DeviceObject : 0x89db98a0 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x00c\] RequestType : ReenumerateDeviceOnly (6) \[Type: _DEVICE_REQUEST_TYPE
+0x010\] ReorderingBarrier : 0x0 \[Type: unsigned char
+0x014\] RequestArgument : 0x0 \[Type: unsigned long
+0x018\] CompletionEvent : 0x0 \[Type: _KEVENT \*
+0x01c\] CompletionStatus : 0x0 \[Type: long \*
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((ntkrnlmp!_ADD_CONTEXT *)0xfffffffff789a5bc))
(*((ntkrnlmp!_ADD_CONTEXT *)0xfffffffff789a5bc)) [Type: _ADD_CONTEXT]
+0x000\] DriverStartType : 0x8 \[Type: unsigned long
1: kd> g
Breakpoint 6 hit
eax=00000000 ebx=00000001 ecx=00000000 edx=00000000 esi=89df9368 edi=89df8008
eip=80c94b8e esp=f789a58c ebp=f789a5c0 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PipProcessDevNodeTree:
80c94b8e 55 push ebp
1: kd> kc
00 nt!PipProcessDevNodeTree
01 nt!PiProcessReenumeration
02 nt!PipDeviceActionWorker
03 nt!PipRequestDeviceAction
04 nt!IopInitializePlugPlayServices
05 nt!IoInitSystem
06 nt!Phase1Initialization
07 nt!PspSystemThreadStartup
08 nt!KiThreadStartup
1: kd> dv
SubtreeRootDeviceNode = 0x89df8008
LoadDriver = 0x00 ''
ReallocateResources = 0x00 ''
EnumType = EnumTypeShallow (0n1)
1: kd> t
Breakpoint 16 hit
eax=f789a585 ebx=00000001 ecx=00000000 edx=00000000 esi=804edc6c edi=00000000
eip=80cae3be esp=f789a33c ebp=f789a588 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopProcessAssignResources:
80cae3be 55 push ebp
1: kd> kc
00 nt!IopProcessAssignResources
01 nt!PipProcessDevNodeTree
02 nt!PiProcessReenumeration
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializePlugPlayServices
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89df8008
Reallocation = 0x00 ''
RebalancePerformed = 0xf789a585 ""
context = 0x00000001
requestTable = 0x804edc6c
resourcesAssigned = 0x00 ''
attempt = 0x80cae3be
maxAttempts = 0xf789a588
tryAgain = 0x00 ''
//
// Allocate and init memory for resource context
//
context = (PDEVICE_LIST_CONTEXT) ExAllocatePool(
PagedPool,
sizeof(DEVICE_LIST_CONTEXT) +
sizeof(PDEVICE_OBJECT) * IopNumberDeviceNodes
);
1: kd> p
eax=e10008b0 ebx=64647050 ecx=00000004 edx=000003ff esi=804edc6c edi=e10008b0
eip=80cae44c esp=f789a314 ebp=f789a338 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopProcessAssignResources+0x8e:
80cae44c 85ff test edi,edi
1: kd> dt _DEVICE_LIST_CONTEXT e10008b0
nt!_DEVICE_LIST_CONTEXT
+0x000 DeviceCount : 0
+0x004 Reallocation : 0x2 ''
+0x008 DeviceList : [1] 0x00140200 _DEVICE_OBJECT
//
// Parse the device node subtree to determine which devices need resources
//
IopProcessAssignResourcesWorker(DeviceNode, context);
1: kd> dt _DEVICE_LIST_CONTEXT e10008b0
nt!_DEVICE_LIST_CONTEXT
+0x000 DeviceCount : 0
+0x004 Reallocation : 0 ''
+0x008 DeviceList : [1] 0x00140200 _DEVICE_OBJECT
1: kd> kc
00 nt!PipProcessStartPhase3
01 nt!PipProcessDevNodeTree
02 nt!PiProcessReenumeration
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializePlugPlayServices
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89df8008
handle = 0x80c92326
unicodeName = struct _UNICODE_STRING "--- memory read error at address 0xffffffff ---"
deviceObject = 0xf789adcc Device for ""
compatibleIds = 0x89df8008
hwIdLength = 1
compatibleIdLength = 0
hwIds = 0xf789a588
buffer = unsigned char [20] ""
keyValueInformation = 0x00000000
flags = 8
length = 0x30
1: kd> t
Breakpoint 25 hit
eax=00000006 ebx=89df8008 ecx=0000013d edx=00000041 esi=00000000 edi=00000002
eip=80c8d7ba esp=f789a340 ebp=f789a588 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
nt!PipEnumerateDevice:
80c8d7ba 55 push ebp
1: kd> kc
00 nt!PipEnumerateDevice
01 nt!PipProcessDevNodeTree
02 nt!PiProcessReenumeration
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializePlugPlayServices
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89df8008
Synchronous = 0x01 ''
1: kd> kc
00 nt!IopSynchronousCall
01 nt!IopQueryDeviceRelations
02 nt!PipEnumerateDevice
03 nt!PipProcessDevNodeTree
04 nt!PiProcessReenumeration
05 nt!PipDeviceActionWorker
06 nt!PipRequestDeviceAction
07 nt!IopInitializePlugPlayServices
08 nt!IoInitSystem
09 nt!Phase1Initialization
0a nt!PspSystemThreadStartup
0b nt!KiThreadStartup
1: kd> dv
DeviceObject = 0x89db98a0 Device for "\Driver\PnpManager"
TopStackLocation = 0xf789a2fc IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS for {...}
Information = 0x89df80e8
event = struct _KEVENT
statusBlock = struct _IO_STATUS_BLOCK
deviceObject = 0x00000008
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0)
((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0) : 0x89db98a0 : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT *]
\
Flags : 0x1040
UpperDevices : Immediately above is Device for "\Driver\ACPI_HAL" [at 0x89db5dd8]
LowerDevices : None
Driver : 0x89db9d28 : Driver "\Driver\PnpManager" [Type: _DRIVER_OBJECT *]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 -n (*((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0))
(*((ntkrnlmp!_DEVICE_OBJECT *)0x89db98a0)) : Device for "\Driver\PnpManager" [Type: _DEVICE_OBJECT]
+0x000\] Type : 3 \[Type: short
+0x002\] Size : 0xc0 \[Type: unsigned short
+0x004\] ReferenceCount : 0 \[Type: long
+0x008\] DriverObject : 0x89db9d28 : Driver "\\Driver\\PnpManager" \[Type: _DRIVER_OBJECT \*
+0x00c\] NextDevice : 0x89db9c00 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x010\] AttachedDevice : 0x89db5dd8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x014\] CurrentIrp : 0x0 \[Type: _IRP \*
+0x018\] Timer : 0x0 \[Type: _IO_TIMER \*
+0x01c\] Flags : 0x1040 \[Type: unsigned long
+0x020\] Characteristics : 0x80 \[Type: unsigned long
+0x024\] Vpb : 0x0 \[Type: _VPB \*
+0x028\] DeviceExtension : 0x89db9958 \[Type: void \*
+0x02c\] DeviceType : 0x4 \[Type: unsigned long
+0x030\] StackSize : 1 \[Type: char
+0x034\] Queue \[Type: __unnamed
+0x05c\] AlignmentRequirement : 0x0 \[Type: unsigned long
+0x060\] DeviceQueue \[Type: _KDEVICE_QUEUE
+0x074\] Dpc \[Type: _KDPC
+0x094\] ActiveThreadCount : 0x0 \[Type: unsigned long
+0x098\] SecurityDescriptor : 0xe12a48e8 \[Type: void \*
+0x09c\] DeviceLock \[Type: _KEVENT
+0x0ac\] SectorSize : 0x0 \[Type: unsigned short
+0x0ae\] Spare1 : 0x1 \[Type: unsigned short
+0x0b0\] DeviceObjectExtension : 0x89db9960 \[Type: _DEVOBJ_EXTENSION \*
+0x0b4\] Reserved : 0x0 \[Type: void \*
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_OBJECT *)0x89db5dd8)
((ntkrnlmp!_DEVICE_OBJECT *)0x89db5dd8) : 0x89db5dd8 : Device for "\Driver\ACPI_HAL" [Type: _DEVICE_OBJECT *]
\
Flags : None Set
UpperDevices : None
LowerDevices : Immediately below is Device for "\Driver\PnpManager" [at 0x89db98a0]
Driver : 0x89df5280 : Driver "\Driver\ACPI_HAL" [Type: _DRIVER_OBJECT *]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 -n (*((ntkrnlmp!_DEVICE_OBJECT *)0x89db5dd8))
(*((ntkrnlmp!_DEVICE_OBJECT *)0x89db5dd8)) : Device for "\Driver\ACPI_HAL" [Type: _DEVICE_OBJECT]
+0x000\] Type : 3 \[Type: short
+0x002\] Size : 0xcc \[Type: unsigned short
+0x004\] ReferenceCount : 0 \[Type: long
+0x008\] DriverObject : 0x89df5280 : Driver "\\Driver\\ACPI_HAL" \[Type: _DRIVER_OBJECT \*
+0x00c\] NextDevice : 0x0 \[Type: _DEVICE_OBJECT \*
+0x010\] AttachedDevice : 0x0 \[Type: _DEVICE_OBJECT \*
+0x014\] CurrentIrp : 0x0 \[Type: _IRP \*
+0x018\] Timer : 0x0 \[Type: _IO_TIMER \*
+0x01c\] Flags : 0x0 \[Type: unsigned long
+0x020\] Characteristics : 0x0 \[Type: unsigned long
+0x024\] Vpb : 0x0 \[Type: _VPB \*
+0x028\] DeviceExtension : 0x89db5e90 \[Type: void \*
+0x02c\] DeviceType : 0x2a \[Type: unsigned long
+0x030\] StackSize : 2 \[Type: char
+0x034\] Queue \[Type: __unnamed
+0x05c\] AlignmentRequirement : 0x0 \[Type: unsigned long
+0x060\] DeviceQueue \[Type: _KDEVICE_QUEUE
+0x074\] Dpc \[Type: _KDPC
+0x094\] ActiveThreadCount : 0x0 \[Type: unsigned long
+0x098\] SecurityDescriptor : 0x0 \[Type: void \*
+0x09c\] DeviceLock \[Type: _KEVENT
+0x0ac\] SectorSize : 0x0 \[Type: unsigned short
+0x0ae\] Spare1 : 0x0 \[Type: unsigned short
+0x0b0\] DeviceObjectExtension : 0x89db5ea8 \[Type: _DEVOBJ_EXTENSION \*
+0x0b4\] Reserved : 0x0 \[Type: void \*
deviceObject = IoGetAttachedDevice(DeviceObject);eax=89db5dd8
1: kd> p
eax=89db5dd8 ebx=89df8008 ecx=00000000 edx=89db98a0 esi=00000000 edi=00000000
eip=80c95ca2 esp=f789a2bc ebp=f789a2e0 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!IopSynchronousCall+0x4c:
80c95ca2 0fbe4030 movsx eax,byte ptr [eax+30h] ds:0023:89db5e08=02
//
// Copy in the caller-supplied stack location contents
//
*irpSp = *TopStackLocation;
//
// Call the driver
//
status = IoCallDriver(deviceObject, irp);
1: kd> p
eax=0000001b ebx=00000000 ecx=89df5280 edx=89df3460 esi=89df3460 edi=89db5dd8
eip=80a26758 esp=f789a29c ebp=f789a2b0 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
nt!IofCallDriver+0x5e:
80a26758 ff548138 call dword ptr [ecx+eax*4+38h] ds:0023:89df5324={hal!HalpDispatchPnp (8050bc44)}
1: kd> t
eax=0000001b ebx=00000000 ecx=89df5280 edx=89df3460 esi=89df3460 edi=89db5dd8
eip=8050bc44 esp=f789a298 ebp=f789a2b0 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
hal!HalpDispatchPnp:
8050bc44 55 push ebp
1: kd> kc
00 hal!HalpDispatchPnp
01 nt!IofCallDriver
02 nt!IopSynchronousCall
03 nt!IopQueryDeviceRelations
04 nt!PipEnumerateDevice
05 nt!PipProcessDevNodeTree
06 nt!PiProcessReenumeration
07 nt!PipDeviceActionWorker
08 nt!PipRequestDeviceAction
09 nt!IopInitializePlugPlayServices
0a nt!IoInitSystem
0b nt!Phase1Initialization
0c nt!PspSystemThreadStartup
0d nt!KiThreadStartup
1: kd> dv
DeviceObject = 0x89db5dd8 Device for "\Driver\ACPI_HAL"
Irp = 0x89df3460
1: kd> !irp 0x89df3460
Irp is active with 2 stacks 2 is current (= 0x89df34f4)
No Mdl: No System Buffer: Thread 89dd4020: Irp stack trace.
cmd flg cl Device File Completion-Context
N/A(0), N/A(0)
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_PNP(1b), IRP_MN_QUERY_DEVICE_RELATIONS(7)]
0 0 89db5dd8 00000000 00000000-00000000
\Driver\ACPI_HAL
Args: 00000000 00000000 00000000 00000000
switch (irpSp->MinorFunction) {
case IRP_MN_QUERY_DEVICE_RELATIONS:
HalPrint(("HAL: (%s) Query_Device_Relations Irp received\n",
objectTypeString));
relationType = irpSp->Parameters.QueryDeviceRelations.Type;
status = HalpQueryDeviceRelations(DeviceObject,
relationType,
(PDEVICE_RELATIONS*)&Irp->IoStatus.Information);
break;
1: kd> kc
00 hal!HalpQueryDeviceRelations
01 hal!HalpDispatchPnp
02 nt!IofCallDriver
03 nt!IopSynchronousCall
04 nt!IopQueryDeviceRelations
05 nt!PipEnumerateDevice
06 nt!PipProcessDevNodeTree
07 nt!PiProcessReenumeration
08 nt!PipDeviceActionWorker
09 nt!PipRequestDeviceAction
0a nt!IopInitializePlugPlayServices
0b nt!IoInitSystem
0c nt!Phase1Initialization
0d nt!PspSystemThreadStartup
0e nt!KiThreadStartup
1: kd> dv
DeviceObject = 0x89db5dd8 Device for "\Driver\ACPI_HAL"
RelationType = BusRelations (0n0)
DeviceRelations = 0x89df347c
switch(RelationType) {
case BusRelations:
if (extensionType == FdoExtensionType) {
Next = FdoExtension->ChildPdoList;
while (Next) {
relationsCount += 1;
Next = Next->Next;
}
relations = ExAllocatePoolWithTag(
PagedPool,
sizeof(DEVICE_RELATIONS) * relationsCount,
HAL_POOL_TAG
);
if (relations == NULL) {
return STATUS_INSUFFICIENT_RESOURCES;
}
relations->Count = relationsCount;
i = 0;
Next = FdoExtension->ChildPdoList;
while (Next) {
relations->Objects[i] = Next->PhysicalDeviceObject;
ObReferenceObject( relations->Objects[i] );
i += 1;
Next = Next->Next;
}
*DeviceRelations = relations;
return STATUS_SUCCESS;
}
break;
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 -n (*((halmacpi!_DEVICE_OBJECT *)0x89db5dd8))
(*((halmacpi!_DEVICE_OBJECT *)0x89db5dd8)) : Device for "\Driver\ACPI_HAL" [Type: _DEVICE_OBJECT]
+0x000\] Type : 3 \[Type: short
+0x002\] Size : 0xcc \[Type: unsigned short
+0x004\] ReferenceCount : 0 \[Type: long
+0x008\] DriverObject : 0x89df5280 : Driver "\\Driver\\ACPI_HAL" \[Type: _DRIVER_OBJECT \*
+0x00c\] NextDevice : 0x0 \[Type: _DEVICE_OBJECT \*
+0x010\] AttachedDevice : 0x0 \[Type: _DEVICE_OBJECT \*
+0x014\] CurrentIrp : 0x0 \[Type: _IRP \*
+0x018\] Timer : 0x0 \[Type: _IO_TIMER \*
+0x01c\] Flags : 0x0 \[Type: unsigned long
+0x020\] Characteristics : 0x0 \[Type: unsigned long
+0x024\] Vpb : 0x0 \[Type: _VPB \*
+0x028\] DeviceExtension : 0x89db5e90 \[Type: void \*
+0x02c\] DeviceType : 0x2a \[Type: unsigned long
+0x030\] StackSize : 2 \[Type: char
+0x034\] Queue \[Type: __unnamed
+0x05c\] AlignmentRequirement : 0x0 \[Type: unsigned long
+0x060\] DeviceQueue \[Type: _KDEVICE_QUEUE
+0x074\] Dpc \[Type: _KDPC
+0x094\] ActiveThreadCount : 0x0 \[Type: unsigned long
+0x098\] SecurityDescriptor : 0x0 \[Type: void \*
+0x09c\] DeviceLock \[Type: _KEVENT
+0x0ac\] SectorSize : 0x0 \[Type: unsigned short
+0x0ae\] Spare1 : 0x0 \[Type: unsigned short
+0x0b0\] DeviceObjectExtension : 0x89db5ea8 \[Type: _DEVOBJ_EXTENSION \*
+0x0b4\] Reserved : 0x0 \[Type: void \*
1: kd> dt _FDO_EXTENSION 0x89db5e90
hal!_FDO_EXTENSION
+0x000 ExtensionType : c1 ( FdoExtensionType )
+0x004 ChildPdoList : 0x89db5d70 _PDO_EXTENSION
+0x008 PhysicalDeviceObject : 0x89db98a0 _DEVICE_OBJECT
+0x00c FunctionalDeviceObject : 0x89db5dd8 _DEVICE_OBJECT
+0x010 AttachedDeviceObject : 0x89db98a0 _DEVICE_OBJECT
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((halmacpi!_PDO_EXTENSION *)0x89db5d70)
((halmacpi!_PDO_EXTENSION *)0x89db5d70) : 0x89db5d70 [Type: _PDO_EXTENSION *]
+0x000\] ExtensionType : PdoExtensionType (192) \[Type: EXTENSION_TYPE
+0x004\] Next : 0x0 \[Type: _PDO_EXTENSION \*
+0x008\] PhysicalDeviceObject : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x00c\] ParentFdoExtension : 0x89db5e90 \[Type: _FDO_EXTENSION \*
+0x010\] PdoType : AcpiDriver (129) \[Type: PDO_TYPE
+0x014\] WdTable : 0x0 \[Type: _WATCHDOG_TIMER_RESOURCE_TABLE \*
1: kd> dv DeviceRelations
DeviceRelations = 0x89df347c
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((halmacpi!_DEVICE_RELATIONS * *)0x89df347c)
((halmacpi!_DEVICE_RELATIONS * *)0x89df347c) : 0x89df347c [Type: _DEVICE_RELATIONS * *]
0xe1293710 [Type: _DEVICE_RELATIONS *]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((halmacpi!_DEVICE_RELATIONS *)0xe1293710)
((halmacpi!_DEVICE_RELATIONS *)0xe1293710) : 0xe1293710 [Type: _DEVICE_RELATIONS *]
+0x000\] Count : 0x1 \[Type: unsigned long
+0x004\] Objects \[Type: _DEVICE_OBJECT \* \[1\]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((halmacpi!_DEVICE_OBJECT * (*)[1])0xe1293714))
(*((halmacpi!_DEVICE_OBJECT * (*)[1])0xe1293714)) [Type: _DEVICE_OBJECT * [1]]
0\] : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
status = IopSynchronousCall(DeviceObject, &irpSp, (PULONG_PTR)DeviceRelations);
if (Relations == BusRelations) {
deviceNode->CompletionStatus = status;
PipSetDevNodeState( deviceNode, DeviceNodeEnumerateCompletion, NULL );
status = STATUS_SUCCESS;
}
return status;
}
DeviceNode->Flags &= ~DNF_REENUMERATE;
status = IopQueryDeviceRelations(BusRelations,
DeviceNode->PhysicalDeviceObject,
Synchronous,
&DeviceNode->OverUsed1.PendingDeviceRelations
);
return status;
}
1: kd> dv
DeviceNode = 0x89df8008
Synchronous = 0x01 ''
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_NODE *)0x89df8008)
((ntkrnlmp!_DEVICE_NODE *)0x89df8008) : 0x89df8008 [Type: _DEVICE_NODE *]
+0x000\] Sibling : 0x89df8c98 \[Type: _DEVICE_NODE \*
+0x004\] Child : 0x0 \[Type: _DEVICE_NODE \*
+0x008\] Parent : 0x89db9ac0 \[Type: _DEVICE_NODE \*
+0x00c\] LastChild : 0x0 \[Type: _DEVICE_NODE \*
+0x010\] Level : 0x1 \[Type: unsigned long
+0x014\] Notify : 0x0 \[Type: _PO_DEVICE_NOTIFY \*
+0x018\] State : DeviceNodeEnumerateCompletion (781) \[Type: _PNP_DEVNODE_STATE
+0x01c\] PreviousState : DeviceNodeStarted (776) \[Type: _PNP_DEVNODE_STATE
+0x020\] StateHistory \[Type: _PNP_DEVNODE_STATE \[20\]
+0x070\] StateHistoryEntry : 0x4 \[Type: unsigned long
+0x074\] CompletionStatus : 0 \[Type: long
+0x078\] PendingIrp : 0x0 \[Type: _IRP \*
+0x07c\] Flags : 0x135 \[Type: unsigned long
+0x080\] UserFlags : 0x0 \[Type: unsigned long
+0x084\] Problem : 0x0 \[Type: unsigned long
+0x088\] PhysicalDeviceObject : 0x89db98a0 : Device for "\\Driver\\PnpManager" \[Type: _DEVICE_OBJECT \*
+0x08c\] ResourceList : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x090\] ResourceListTranslated : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x094\] InstancePath : "Root\\ACPI_HAL\\0000" \[Type: _UNICODE_STRING
+0x09c\] ServiceName : "" \[Type: _UNICODE_STRING
+0x0a4\] DuplicatePDO : 0x0 \[Type: _DEVICE_OBJECT \*
+0x0a8\] ResourceRequirements : 0x0 \[Type: _IO_RESOURCE_REQUIREMENTS_LIST \*
+0x0ac\] InterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b0\] BusNumber : 0xffffffff \[Type: unsigned long
+0x0b4\] ChildInterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b8\] ChildBusNumber : 0xffffffff \[Type: unsigned long
+0x0bc\] ChildBusTypeIndex : 0xffff \[Type: unsigned short
+0x0be\] RemovalPolicy : 0x0 \[Type: unsigned char
+0x0bf\] HardwareRemovalPolicy : 0x0 \[Type: unsigned char
+0x0c0\] TargetDeviceNotify \[Type: _LIST_ENTRY
+0x0c8\] DeviceArbiterList \[Type: _LIST_ENTRY
+0x0d0\] DeviceTranslatorList \[Type: _LIST_ENTRY
+0x0d8\] NoTranslatorMask : 0x0 \[Type: unsigned short
+0x0da\] QueryTranslatorMask : 0x0 \[Type: unsigned short
+0x0dc\] NoArbiterMask : 0x0 \[Type: unsigned short
+0x0de\] QueryArbiterMask : 0x0 \[Type: unsigned short
+0x0e0\] OverUsed1 \[Type: __unnamed
+0x0e4\] OverUsed2 \[Type: __unnamed
+0x0e8\] BootResources : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x0ec\] CapabilityFlags : 0x0 \[Type: unsigned long
+0x0f0\] DockInfo \[Type: __unnamed
+0x100\] DisableableDepends : 0x0 \[Type: unsigned long
+0x104\] PendedSetInterfaceState \[Type: _LIST_ENTRY
+0x10c\] LegacyBusListEntry \[Type: _LIST_ENTRY
1: kd> dd 0x89df8008+e0
89df80e8 e1293710 00000000 00000000 00000000
89df80f8 00000000 89df80fc 89df80fc 00000000
89df8108 00000000 89df810c 89df810c 89df8114
89df8118 89df8114 00000000 00000000 00000000
89df8128 00020025 0000000c 89db8131 89dc8289
89df8138 020b0002 7270614d 89db81d0 00000001
89df8148 00000000 00000000 00000003 00010101
89df8158 000003f8 00000000 00000007 00010002
1: kd> dy halmacpi!_DEVICE_RELATIONS e1293710
^ Syntax error in 'dy halmacpi!_DEVICE_RELATIONS e1293710'
1: kd> dt halmacpi!_DEVICE_RELATIONS e1293710
+0x000 Count : 1
+0x004 Objects : [1] 0x89db5cb8 _DEVICE_OBJECT
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 (*((halmacpi!_DEVICE_OBJECT * (*)[1])0xffffffffe1293714))
(*((halmacpi!_DEVICE_OBJECT * (*)[1])0xffffffffe1293714)) [Type: _DEVICE_OBJECT * [1]]
0\] : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((halmacpi!_DEVICE_OBJECT *)0x89db5cb8)
((halmacpi!_DEVICE_OBJECT *)0x89db5cb8) : 0x89db5cb8 : Device for "\Driver\ACPI_HAL" [Type: _DEVICE_OBJECT *]
\
Flags : 0x40
UpperDevices : None
LowerDevices
Driver : 0x89df5280 : Driver "\Driver\ACPI_HAL" [Type: _DRIVER_OBJECT *]
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 -n (*((halmacpi!_DEVICE_OBJECT *)0x89db5cb8))
(*((halmacpi!_DEVICE_OBJECT *)0x89db5cb8)) : Device for "\Driver\ACPI_HAL" [Type: _DEVICE_OBJECT]
+0x000\] Type : 3 \[Type: short
+0x002\] Size : 0xd0 \[Type: unsigned short
+0x004\] ReferenceCount : 0 \[Type: long
+0x008\] DriverObject : 0x89df5280 : Driver "\\Driver\\ACPI_HAL" \[Type: _DRIVER_OBJECT \*
+0x00c\] NextDevice : 0x89db5dd8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x010\] AttachedDevice : 0x0 \[Type: _DEVICE_OBJECT \*
+0x014\] CurrentIrp : 0x0 \[Type: _IRP \*
+0x018\] Timer : 0x0 \[Type: _IO_TIMER \*
+0x01c\] Flags : 0x40 \[Type: unsigned long
+0x020\] Characteristics : 0x80 \[Type: unsigned long
+0x024\] Vpb : 0x0 \[Type: _VPB \*
+0x028\] DeviceExtension : 0x89db5d70 \[Type: void \*
+0x02c\] DeviceType : 0x2a \[Type: unsigned long
+0x030\] StackSize : 1 \[Type: char
+0x034\] Queue \[Type: __unnamed
+0x05c\] AlignmentRequirement : 0x0 \[Type: unsigned long
+0x060\] DeviceQueue \[Type: _KDEVICE_QUEUE
+0x074\] Dpc \[Type: _KDPC
+0x094\] ActiveThreadCount : 0x0 \[Type: unsigned long
+0x098\] SecurityDescriptor : 0xe12a48e8 \[Type: void \*
+0x09c\] DeviceLock \[Type: _KEVENT
+0x0ac\] SectorSize : 0x0 \[Type: unsigned short
+0x0ae\] Spare1 : 0x0 \[Type: unsigned short
+0x0b0\] DeviceObjectExtension : 0x89db5d88 \[Type: _DEVOBJ_EXTENSION \*
+0x0b4\] Reserved : 0x0 \[Type: void \*
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((halmacpi!_DEVOBJ_EXTENSION *)0x89db5d88)
((halmacpi!_DEVOBJ_EXTENSION *)0x89db5d88) : 0x89db5d88 [Type: _DEVOBJ_EXTENSION *]
+0x000\] Type : 13 \[Type: short
+0x002\] Size : 0x0 \[Type: unsigned short
+0x004\] DeviceObject : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
1: kd> dt nt!_DEVOBJ_EXTENSION *)0x89db5d88
Numeric expression missing from '*)0x89db5d88'
1: kd> dt nt!_DEVOBJ_EXTENSION 0x89db5d88
+0x000 Type : 0n13
+0x002 Size : 0
+0x004 DeviceObject : 0x89db5cb8 _DEVICE_OBJECT
+0x008 PowerFlags : 0
+0x00c Dope : (null)
+0x010 ExtensionFlags : 0
+0x014 DeviceNode : (null)
+0x018 AttachedTo : (null)
+0x01c StartIoCount : 0n0
+0x020 StartIoKey : 0n0
+0x024 StartIoFlags : 0
+0x028 Vpb : (null)
case DeviceNodeEnumerateCompletion:
status = PipEnumerateCompleted(currentNode);
nextNode = ChildNode;
break;
1: kd> t
Breakpoint 17 hit
eax=00000009 ebx=89df8008 ecx=00000135 edx=00000047 esi=00000000 edi=00000001
eip=80c8d996 esp=f789a344 ebp=f789a588 iopl=0 nv up ei ng nz na po cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000283
nt!PipEnumerateCompleted:
80c8d996 55 push ebp
1: kd> kc
00 nt!PipEnumerateCompleted
01 nt!PipProcessDevNodeTree
02 nt!PiProcessReenumeration
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializePlugPlayServices
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89df8008
childRemoved = 0x89 ''
childDeviceNode = 0x00000008
i = 0x89df8008
//
// We've found another physical device, see if there is
// already a devnode for it.
//
childDeviceNode = (PDEVICE_NODE)childDeviceObject->DeviceObjectExtension->DeviceNode;
if (childDeviceNode == NULL) {
//
// Device node doesn't exist, create one.
//
allocationStatus = PipAllocateDeviceNode(
childDeviceObject,
&childDeviceNode);
if (childDeviceNode) {
//
1: kd> dv childDeviceNode
childDeviceNode = 0x89db5008
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_NODE *)0x89db5008)
((ntkrnlmp!_DEVICE_NODE *)0x89db5008) : 0x89db5008 [Type: _DEVICE_NODE *]
+0x000\] Sibling : 0x0 \[Type: _DEVICE_NODE \*
+0x004\] Child : 0x0 \[Type: _DEVICE_NODE \*
+0x008\] Parent : 0x0 \[Type: _DEVICE_NODE \*
+0x00c\] LastChild : 0x0 \[Type: _DEVICE_NODE \*
+0x010\] Level : 0x0 \[Type: unsigned long
+0x014\] Notify : 0x0 \[Type: _PO_DEVICE_NOTIFY \*
+0x018\] State : DeviceNodeUninitialized (769) \[Type: _PNP_DEVNODE_STATE
+0x01c\] PreviousState : 0 \[Type: _PNP_DEVNODE_STATE
+0x020\] StateHistory \[Type: _PNP_DEVNODE_STATE \[20\]
+0x070\] StateHistoryEntry : 0x0 \[Type: unsigned long
+0x074\] CompletionStatus : 0 \[Type: long
+0x078\] PendingIrp : 0x0 \[Type: _IRP \*
+0x07c\] Flags : 0x0 \[Type: unsigned long
+0x080\] UserFlags : 0x0 \[Type: unsigned long
+0x084\] Problem : 0x0 \[Type: unsigned long
+0x088\] PhysicalDeviceObject : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x08c\] ResourceList : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x090\] ResourceListTranslated : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x094\] InstancePath : "" \[Type: _UNICODE_STRING
+0x09c\] ServiceName : "" \[Type: _UNICODE_STRING
+0x0a4\] DuplicatePDO : 0x0 \[Type: _DEVICE_OBJECT \*
+0x0a8\] ResourceRequirements : 0x0 \[Type: _IO_RESOURCE_REQUIREMENTS_LIST \*
+0x0ac\] InterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b0\] BusNumber : 0xffffffff \[Type: unsigned long
+0x0b4\] ChildInterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b8\] ChildBusNumber : 0xffffffff \[Type: unsigned long
+0x0bc\] ChildBusTypeIndex : 0xffff \[Type: unsigned short
+0x0be\] RemovalPolicy : 0x0 \[Type: unsigned char
+0x0bf\] HardwareRemovalPolicy : 0x0 \[Type: unsigned char
+0x0c0\] TargetDeviceNotify \[Type: _LIST_ENTRY
+0x0c8\] DeviceArbiterList \[Type: _LIST_ENTRY
+0x0d0\] DeviceTranslatorList \[Type: _LIST_ENTRY
+0x0d8\] NoTranslatorMask : 0x0 \[Type: unsigned short
+0x0da\] QueryTranslatorMask : 0x0 \[Type: unsigned short
+0x0dc\] NoArbiterMask : 0x0 \[Type: unsigned short
+0x0de\] QueryArbiterMask : 0x0 \[Type: unsigned short
+0x0e0\] OverUsed1 \[Type: __unnamed
+0x0e4\] OverUsed2 \[Type: __unnamed
+0x0e8\] BootResources : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x0ec\] CapabilityFlags : 0x0 \[Type: unsigned long
+0x0f0\] DockInfo \[Type: __unnamed
+0x100\] DisableableDepends : 0x0 \[Type: unsigned long
+0x104\] PendedSetInterfaceState \[Type: _LIST_ENTRY
+0x10c\] LegacyBusListEntry \[Type: _LIST_ENTRY
1: kd> !devnode 0 1
Dumping IopRootDeviceNode (= 0x89db9ac0)
DevNode 0x89db9ac0 for PDO 0x89db9c00
InstancePath is "HTREE\ROOT\0"
State = DeviceNodeStarted (0x308)
Previous State = DeviceNodeEnumerateCompletion (0x30d)
DevNode 0x89df8008 for PDO 0x89db98a0
InstancePath is "Root\ACPI_HAL\0000"
State = DeviceNodeEnumerateCompletion (0x30d)
Previous State = DeviceNodeStarted (0x308)
DevNode 0x89db5008 for PDO 0x89db5cb8
State = DeviceNodeUninitialized (0x301)
Previous State = Unknown State (0x0)
DevNode 0x89df8c98 for PDO 0x89df8df0
InstancePath is "Root\COMPOSITE_BATTERY\0000"
ServiceName is "Compbatt"
State = DeviceNodeInitialized (0x302)
Previous State = DeviceNodeUninitialized (0x301)
1: kd> !object \driver
Object: e1284930 Type: (89dd5e70) Directory
ObjectHeader: e1284918 (old version)
HandleCount: 0 PointerCount: 4
Directory Object: e1002aa0 Name: Driver
Hash Address Type Name
18 89df5180 Driver WMIxWDM
89df5280 Driver ACPI_HAL
33 89db9d28 Driver PnpManager
1: kd> p
Breakpoint 4 hit
eax=00000000 ebx=00000000 ecx=00000010 edx=01610000 esi=00000000 edi=89df8008
eip=80a2ec74 esp=f789a320 ebp=f789a340 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!PipSetDevNodeState:
80a2ec74 55 push ebp
1: kd> dv
DeviceNode = 0x89df8008
State = DeviceNodeStarted (0n776)
OldState = 0x00000000
oldIrql = 0x89 ''
1: kd> gu
Root\ACPI_HAL\0000: DeviceNodeEnumerateCompletion => DeviceNodeStarted
eax=00000000 ebx=00000000 ecx=80ae0dfa edx=00000047 esi=00000000 edi=89df8008
eip=80c8dc95 esp=f789a330 ebp=f789a340 iopl=0 nv up ei ng nz na po cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000283
nt!PipEnumerateCompleted+0x2ff:
80c8dc95 807d0b00 cmp byte ptr [ebp+0Bh],0 ss:0010:f789a34b=00
case ChildNode:
if (currentNode->Child != NULL) {
currentNode = currentNode->Child;
break;
}
switch (currentNode->State) {
case DeviceNodeUninitialized:
if (!ProcessOnlyIntermediateStates) {
if (currentNode->Parent == enumeratedBus && startRoot == NULL) {
startRoot = currentNode;
}
if((!ReallocateResources && EnumType == EnumTypeNone) || startRoot) {
status = PiProcessNewDeviceNode(currentNode);
if (NT_SUCCESS(status)) {
nextNode = SameNode;
}
}
}
break;
1: kd> t
Breakpoint 2 hit
eax=89df8008 ebx=89db5008 ecx=00000010 edx=00000047 esi=00000000 edi=00000001
eip=80c93882 esp=f789a344 ebp=f789a588 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
nt!PiProcessNewDeviceNode:
80c93882 55 push ebp
1: kd> kc
00 nt!PiProcessNewDeviceNode
01 nt!PipProcessDevNodeTree
02 nt!PiProcessReenumeration
03 nt!PipDeviceActionWorker
04 nt!PipRequestDeviceAction
05 nt!IopInitializePlugPlayServices
06 nt!IoInitSystem
07 nt!Phase1Initialization
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> dv
DeviceNode = 0x89db5008
compatibleIDs = 0xf789a588
configuredBySetup = 0x89 ''
1: kd> dx -id 0,0,ffffffff89dd5240 -r1 ((ntkrnlmp!_DEVICE_NODE *)0x89db5008)
((ntkrnlmp!_DEVICE_NODE *)0x89db5008) : 0x89db5008 [Type: _DEVICE_NODE *]
+0x000\] Sibling : 0x0 \[Type: _DEVICE_NODE \*
+0x004\] Child : 0x0 \[Type: _DEVICE_NODE \*
+0x008\] Parent : 0x89df8008 \[Type: _DEVICE_NODE \*
+0x00c\] LastChild : 0x0 \[Type: _DEVICE_NODE \*
+0x010\] Level : 0x2 \[Type: unsigned long
+0x014\] Notify : 0x0 \[Type: _PO_DEVICE_NOTIFY \*
+0x018\] State : DeviceNodeUninitialized (769) \[Type: _PNP_DEVNODE_STATE
+0x01c\] PreviousState : 0 \[Type: _PNP_DEVNODE_STATE
+0x020\] StateHistory \[Type: _PNP_DEVNODE_STATE \[20\]
+0x070\] StateHistoryEntry : 0x0 \[Type: unsigned long
+0x074\] CompletionStatus : 0 \[Type: long
+0x078\] PendingIrp : 0x0 \[Type: _IRP \*
+0x07c\] Flags : 0x10 \[Type: unsigned long
+0x080\] UserFlags : 0x0 \[Type: unsigned long
+0x084\] Problem : 0x0 \[Type: unsigned long
+0x088\] PhysicalDeviceObject : 0x89db5cb8 : Device for "\\Driver\\ACPI_HAL" \[Type: _DEVICE_OBJECT \*
+0x08c\] ResourceList : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x090\] ResourceListTranslated : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x094\] InstancePath : "" \[Type: _UNICODE_STRING
+0x09c\] ServiceName : "" \[Type: _UNICODE_STRING
+0x0a4\] DuplicatePDO : 0x0 \[Type: _DEVICE_OBJECT \*
+0x0a8\] ResourceRequirements : 0x0 \[Type: _IO_RESOURCE_REQUIREMENTS_LIST \*
+0x0ac\] InterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b0\] BusNumber : 0xffffffff \[Type: unsigned long
+0x0b4\] ChildInterfaceType : InterfaceTypeUndefined (-1) \[Type: _INTERFACE_TYPE
+0x0b8\] ChildBusNumber : 0xffffffff \[Type: unsigned long
+0x0bc\] ChildBusTypeIndex : 0xffff \[Type: unsigned short
+0x0be\] RemovalPolicy : 0x0 \[Type: unsigned char
+0x0bf\] HardwareRemovalPolicy : 0x0 \[Type: unsigned char
+0x0c0\] TargetDeviceNotify \[Type: _LIST_ENTRY
+0x0c8\] DeviceArbiterList \[Type: _LIST_ENTRY
+0x0d0\] DeviceTranslatorList \[Type: _LIST_ENTRY
+0x0d8\] NoTranslatorMask : 0x0 \[Type: unsigned short
+0x0da\] QueryTranslatorMask : 0x0 \[Type: unsigned short
+0x0dc\] NoArbiterMask : 0x0 \[Type: unsigned short
+0x0de\] QueryArbiterMask : 0x0 \[Type: unsigned short
+0x0e0\] OverUsed1 \[Type: __unnamed
+0x0e4\] OverUsed2 \[Type: __unnamed
+0x0e8\] BootResources : 0x0 \[Type: _CM_RESOURCE_LIST \*
+0x0ec\] CapabilityFlags : 0x0 \[Type: unsigned long
+0x0f0\] DockInfo \[Type: __unnamed
+0x100\] DisableableDepends : 0x0 \[Type: unsigned long
+0x104\] PendedSetInterfaceState \[Type: _LIST_ENTRY
+0x10c\] LegacyBusListEntry \[Type: _LIST_ENTRY