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]
\
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 : 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)