nt!_DEVICE_NODE结构中的ResourceRequirements结构类型为_IO_RESOURCE_REQUIREMENTS_LIST

nt!_DEVICE_NODE结构中的ResourceRequirements结构类型为_IO_RESOURCE_REQUIREMENTS_LIST

0: kd> !DevNode 0x899c1008 6

DevNode 0x899c1008 for PDO 0x899c1de0

Parent 0x899c5850 Sibling 0000000000 Child 0x899875a8

InstancePath is "ACPI_HAL\PNP0C08\0"

ServiceName is "ACPI"

State = DeviceNodeStarted (0x308)

Previous State = DeviceNodeEnumerateCompletion (0x30d)

StateHistory[07] = DeviceNodeEnumerateCompletion (0x30d)

StateHistory[06] = DeviceNodeStarted (0x308)

StateHistory[05] = DeviceNodeStartPostWork (0x307)

StateHistory[04] = DeviceNodeStartCompletion (0x306)

StateHistory[03] = DeviceNodeResourcesAssigned (0x304)

StateHistory[02] = DeviceNodeDriversAdded (0x303)

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)

Flags (0x000000f0) DNF_ENUMERATED, DNF_IDS_QUERIED,

DNF_HAS_BOOT_CONFIG, DNF_BOOT_CONFIG_RESERVED

CapabilityFlags (0x000000c0) UniqueID, SilentInstall

CmResourceList at 0xe127b758 Version 1.1 Interface 0xf Bus #0xffffffff

Entry 0 - Interrupt (0x2) Shared (0x3)

Flags (LEVEL_SENSITIVE

Level 0x9, Vector 0x9, Group 0, Affinity 0xffffffff

BootResourcesList at 0xe127cbb8 Version 1.1 Interface 0xf Bus #0xffffffff

Entry 0 - Interrupt (0x2) Shared (0x3)

Flags (LEVEL_SENSITIVE

Level 0x9, Vector 0x9, Group 0, Affinity 0xffffffff

IoResList at 0xe1287ce8 : Interface 0xf Bus 0xffffffff Slot 0

Reserved Values = {0x00000001, 0xb2b20001, 0x6e656449}

Alternative 0 (Version 1.1)
Preferred Descriptor 0 - NonArbitrated/ConfigData (0x80) Shared (0x3)
Flags (
Data: : 0x1 0x69006d 0x79006c

Preferred Descriptor 1 - Interrupt (0x2) Shared (0x3)
Flags (LEVEL_SENSITIVE
0x9 - 0x9

0: kd> dt _Device_Node 0x899c1008

nt!_DEVICE_NODE

+0x000 Sibling : (null)

+0x004 Child : 0x899875a8 _DEVICE_NODE

+0x008 Parent : 0x899c5850 _DEVICE_NODE

+0x00c LastChild : 0x899ae580 _DEVICE_NODE

+0x010 Level : 2

+0x014 Notify : (null)

+0x018 State : 308 ( DeviceNodeStarted )

+0x01c PreviousState : 30d ( DeviceNodeEnumerateCompletion )

+0x020 StateHistory : [20] 301 ( DeviceNodeUninitialized )

+0x070 StateHistoryEntry : 8

+0x074 CompletionStatus : 0n0

+0x078 PendingIrp : (null)

+0x07c Flags : 0xf0

+0x080 UserFlags : 0

+0x084 Problem : 0

+0x088 PhysicalDeviceObject : 0x899c1de0 _DEVICE_OBJECT

+0x08c ResourceList : 0xe127b758 _CM_RESOURCE_LIST

+0x090 ResourceListTranslated : 0xe127fe58 _CM_RESOURCE_LIST

+0x094 InstancePath : _UNICODE_STRING "ACPI_HAL\PNP0C08\0"

+0x09c ServiceName : _UNICODE_STRING "ACPI"

+0x0a4 DuplicatePDO : (null)
+0x0a8 ResourceRequirements : 0xe1287ce8 _IO_RESOURCE_REQUIREMENTS_LIST

+0x0ac InterfaceType : 0xffffffff (No matching name)

+0x0b0 BusNumber : 0xfffffff0

+0x0b4 ChildInterfaceType : 0xffffffff (No matching name)

+0x0b8 ChildBusNumber : 0xfffffff0

+0x0bc ChildBusTypeIndex : 0xffff

+0x0be RemovalPolicy : 0x1 ''

+0x0bf HardwareRemovalPolicy : 0x1 ''

+0x0c0 TargetDeviceNotify : _LIST_ENTRY [ 0x899c10c8 - 0x899c10c8 ]

+0x0c8 DeviceArbiterList : _LIST_ENTRY [ 0x899c10d0 - 0x899c10d0 ]

+0x0d0 DeviceTranslatorList : _LIST_ENTRY [ 0x899c10d8 - 0x899c10d8 ]

+0x0d8 NoTranslatorMask : 0x40

+0x0da QueryTranslatorMask : 0x40

+0x0dc NoArbiterMask : 0x40

+0x0de QueryArbiterMask : 0x40

+0x0e0 OverUsed1 : __unnamed

+0x0e4 OverUsed2 : __unnamed

+0x0e8 BootResources : 0xe127cbb8 _CM_RESOURCE_LIST

+0x0ec CapabilityFlags : 0xc0

+0x0f0 DockInfo : __unnamed

+0x100 DisableableDepends : 0

+0x104 PendedSetInterfaceState : _LIST_ENTRY [ 0x899c110c - 0x899c110c ]

+0x10c LegacyBusListEntry : _LIST_ENTRY [ 0x899c1114 - 0x899c1114 ]

0: kd> dt _IO_RESOURCE_REQUIREMENTS_LIST 0xe1287ce8

hal!_IO_RESOURCE_REQUIREMENTS_LIST

+0x000 ListSize : 0x68

+0x004 InterfaceType : f ( PNPBus )

+0x008 BusNumber : 0xffffffff

+0x00c SlotNumber : 0

+0x010 Reserved : [3] 1

+0x01c AlternativeLists : 1

+0x020 List : [1] _IO_RESOURCE_LIST

0: kd> dx -id 0,0,899a2278 -r1 (*((halmacpi!_IO_RESOURCE_LIST (*)[1])0xe1287d08))

(*((halmacpi!_IO_RESOURCE_LIST (*)[1])0xe1287d08)) [Type: _IO_RESOURCE_LIST [1]]

0\] \[Type: _IO_RESOURCE_LIST

0: kd> dx -id 0,0,899a2278 -r1 (*((halmacpi!_IO_RESOURCE_LIST *)0xe1287d08))

(*((halmacpi!_IO_RESOURCE_LIST *)0xe1287d08)) [Type: _IO_RESOURCE_LIST]

\\] \[Type: _IO_RESOURCE_LIST

0\] : Unknown Resource \[Type: _IO_RESOURCE_DESCRIPTOR

1\] : Interrupt Resource \[Type: _IO_RESOURCE_DESCRIPTOR

0: kd> dx -id 0,0,899a2278 -r1 -nv (*((halmacpi!_IO_RESOURCE_LIST *)0xe1287d08))

(*((halmacpi!_IO_RESOURCE_LIST *)0xe1287d08)) [Type: _IO_RESOURCE_LIST]

+0x000\] Version : 0x1 \[Type: unsigned short

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

[+0x004] Count : 0x2 [Type: unsigned long]

+0x008\] Descriptors \[Type: _IO_RESOURCE_DESCRIPTOR \[1\]

0: kd> dx -id 0,0,899a2278 -r1 (*((halmacpi!_IO_RESOURCE_DESCRIPTOR (*)[1])0xe1287d10))

(*((halmacpi!_IO_RESOURCE_DESCRIPTOR (*)[1])0xe1287d10)) [Type: _IO_RESOURCE_DESCRIPTOR [1]]

0\] : Unknown Resource \[Type: _IO_RESOURCE_DESCRIPTOR

0: kd> dx -id 0,0,899a2278 -r1 (*((halmacpi!_IO_RESOURCE_DESCRIPTOR *)0xe1287d10))

(*((halmacpi!_IO_RESOURCE_DESCRIPTOR *)0xe1287d10)) : Unknown Resource [Type: _IO_RESOURCE_DESCRIPTOR]

\\] \[Type: _IO_RESOURCE_DESCRIPTOR

Type : 0x80 [Type: unsigned char]

Flags : 0x0

0: kd> dx -id 0,0,899a2278 -r1 -nv (*((halmacpi!_IO_RESOURCE_DESCRIPTOR *)0xe1287d10))

(*((halmacpi!_IO_RESOURCE_DESCRIPTOR *)0xe1287d10)) : Unknown Resource [Type: _IO_RESOURCE_DESCRIPTOR]

+0x000\] Option : 0x1 \[Type: unsigned char

+0x001\] Type : 0x80 \[Type: unsigned char

+0x002\] ShareDisposition : 0x3 \[Type: unsigned char

+0x003\] Spare1 : 0x0 \[Type: unsigned char

+0x004\] Flags : 0x0 \[Type: unsigned short

+0x006\] Spare2 : 0x0 \[Type: unsigned short

+0x008\] u \[Type: __unnamed

0: kd> dt halmacpi!_IO_RESOURCE_DESCRIPTOR 0xe1287d10

+0x000 Option : 0x1 ''

+0x001 Type : 0x80 ''

+0x002 ShareDisposition : 0x3 ''

+0x003 Spare1 : 0 ''

+0x004 Flags : 0

+0x006 Spare2 : 0

+0x008 u : __unnamed

0: kd> dt halmacpi!_IO_RESOURCE_DESCRIPTOR 0xe1287d10 -r

+0x000 Option : 0x1 ''

+0x001 Type : 0x80 ''

+0x002 ShareDisposition : 0x3 ''

+0x003 Spare1 : 0 ''

+0x004 Flags : 0

+0x006 Spare2 : 0

+0x008 u : __unnamed

+0x000 Port : __unnamed

+0x000 Length : 1

+0x004 Alignment : 0x69006d

+0x008 MinimumAddress : _LARGE_INTEGER 0x00360020`0079006c

+0x010 MaximumAddress : _LARGE_INTEGER 0x0064006f`004d0020

+0x000 Memory : __unnamed

+0x000 Length : 1

+0x004 Alignment : 0x69006d

+0x008 MinimumAddress : _LARGE_INTEGER 0x00360020`0079006c

+0x010 MaximumAddress : _LARGE_INTEGER 0x0064006f`004d0020

+0x000 Interrupt : __unnamed

+0x000 MinimumVector : 1

+0x004 MaximumVector : 0x69006d

+0x000 Dma : __unnamed

+0x000 MinimumChannel : 1

+0x004 MaximumChannel : 0x69006d

+0x000 Generic : __unnamed

+0x000 Length : 1

+0x004 Alignment : 0x69006d

+0x008 MinimumAddress : _LARGE_INTEGER 0x00360020`0079006c

+0x010 MaximumAddress : _LARGE_INTEGER 0x0064006f`004d0020

+0x000 DevicePrivate : __unnamed

+0x000 Data : [3] 1

+0x000 BusNumber : __unnamed

+0x000 Length : 1

+0x004 MinBusNumber : 0x69006d

+0x008 MaxBusNumber : 0x79006c

+0x00c Reserved : 0x360020
+0x000 ConfigData : __unnamed 取这个。
+0x000 Priority : 1
+0x004 Reserved1 : 0x69006d
+0x008 Reserved2 : 0x79006c

0: kd> dt halmacpi!_IO_RESOURCE_DESCRIPTOR -v

struct _IO_RESOURCE_DESCRIPTOR, 7 elements, 0x20 bytes

+0x000 Option : UChar

+0x001 Type : UChar

+0x002 ShareDisposition : UChar

+0x003 Spare1 : UChar

+0x004 Flags : Uint2B

+0x006 Spare2 : Uint2B

+0x008 u : union __unnamed, 8 elements, 0x18 bytes

0: kd> dt halmacpi!_IO_RESOURCE_DESCRIPTOR 0xe1287d10+20

+0x000 Option : 0x1 ''

+0x001 Type : 0x2 ''

+0x002 ShareDisposition : 0x3 ''

+0x003 Spare1 : 0x80 ''

+0x004 Flags : 0

+0x006 Spare2 : 0

+0x008 u : __unnamed

0: kd> dt halmacpi!_IO_RESOURCE_DESCRIPTOR 0xe1287d10+20 -r

+0x000 Option : 0x1 ''

+0x001 Type : 0x2 ''

+0x002 ShareDisposition : 0x3 ''

+0x003 Spare1 : 0x80 ''

+0x004 Flags : 0

+0x006 Spare2 : 0

+0x008 u : __unnamed

+0x000 Port : __unnamed

+0x000 Length : 9

+0x004 Alignment : 9

+0x008 MinimumAddress : _LARGE_INTEGER 0x0

+0x010 MaximumAddress : _LARGE_INTEGER 0x0

+0x000 Memory : __unnamed

+0x000 Length : 9

+0x004 Alignment : 9

+0x008 MinimumAddress : _LARGE_INTEGER 0x0

+0x010 MaximumAddress : _LARGE_INTEGER 0x0
+0x000 Interrupt : __unnamed 取这个。
+0x000 MinimumVector : 9
+0x004 MaximumVector : 9

+0x000 Dma : __unnamed

+0x000 MinimumChannel : 9

+0x004 MaximumChannel : 9

+0x000 Generic : __unnamed

+0x000 Length : 9

+0x004 Alignment : 9

+0x008 MinimumAddress : _LARGE_INTEGER 0x0

+0x010 MaximumAddress : _LARGE_INTEGER 0x0

+0x000 DevicePrivate : __unnamed

+0x000 Data : [3] 9

+0x000 BusNumber : __unnamed

+0x000 Length : 9

+0x004 MinBusNumber : 9

+0x008 MaxBusNumber : 0

+0x00c Reserved : 0

+0x000 ConfigData : __unnamed

+0x000 Priority : 9

+0x004 Reserved1 : 9

+0x008 Reserved2 : 0

第二部分:

/

// This structure defines one type of resource requested by the driver

//

typedef struct _IO_RESOURCE_DESCRIPTOR {

UCHAR Option;

UCHAR Type; // use CM_RESOURCE_TYPE

UCHAR ShareDisposition; // use CM_SHARE_DISPOSITION

UCHAR Spare1;

USHORT Flags; // use CM resource flag defines

USHORT Spare2; // align

union {

struct {

ULONG Length;

ULONG Alignment;

PHYSICAL_ADDRESS MinimumAddress;

PHYSICAL_ADDRESS MaximumAddress;

} Port;

struct {

ULONG Length;

ULONG Alignment;

PHYSICAL_ADDRESS MinimumAddress;

PHYSICAL_ADDRESS MaximumAddress;

} Memory;

struct {

ULONG MinimumVector;

ULONG MaximumVector;

} Interrupt;

struct {

ULONG MinimumChannel;

ULONG MaximumChannel;

} Dma;

struct {

ULONG Length;

ULONG Alignment;

PHYSICAL_ADDRESS MinimumAddress;

PHYSICAL_ADDRESS MaximumAddress;

} Generic;

struct {

ULONG Data[3];

} DevicePrivate;

//

// Bus Number information.

//

struct {

ULONG Length;

ULONG MinBusNumber;

ULONG MaxBusNumber;

ULONG Reserved;

} BusNumber;

struct {

ULONG Priority; // use LCPRI_Xxx values in cfg.h

ULONG Reserved1;

ULONG Reserved2;

} ConfigData;

} u;

} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;

typedef int CM_RESOURCE_TYPE;

// CmResourceTypeNull is reserved

#define CmResourceTypeNull 0 // ResType_All or ResType_None (0x0000)

#define CmResourceTypePort 1 // ResType_IO (0x0002)

#define CmResourceTypeInterrupt 2 // ResType_IRQ (0x0004)

#define CmResourceTypeMemory 3 // ResType_Mem (0x0001)

#define CmResourceTypeDma 4 // ResType_DMA (0x0003)

#define CmResourceTypeDeviceSpecific 5 // ResType_ClassSpecific (0xFFFF)

#define CmResourceTypeBusNumber 6 // ResType_BusNumber (0x0006)

#define CmResourceTypeMaximum 7

#define CmResourceTypeNonArbitrated 128 // Not arbitrated if 0x80 bit set

#define CmResourceTypeConfigData 128 // ResType_Reserved (0x8000)

#define CmResourceTypeDevicePrivate 129 // ResType_DevicePrivate (0x8001)

#define CmResourceTypePcCardConfig 130 // ResType_PcCardConfig (0x8002)

#define CmResourceTypeMfCardConfig 131 // ResType_MfCardConfig (0x8003)