hal!HaliInitPnpDriver函数分析和对Root-ACPI_HAL-0000的处理

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 *]

\\] \[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 *]

\\] \[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 *]

\\] \[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 *]

\\] \[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