struct _DEVICE_NODE { struct _DEVICE_NODE* Sibling;/* 0x0 4 */ struct _DEVICE_NODE* Child;/* 0x4 4 */ struct _DEVICE_NODE* Parent;/* 0x8 4 */ struct _DEVICE_NODE* LastChild;/* 0xc 4 */ struct _DEVICE_OBJECT* PhysicalDeviceObject;/* 0x10 4 */ struct _UNICODE_STRING InstancePath;/* 0x14 8 */ struct _UNICODE_STRING ServiceName;/* 0x1c 8 */ struct _IRP* PendingIrp;/* 0x24 4 */ struct _POP_FX_DEVICE* FxDevice;/* 0x28 4 */ volatile long FxDeviceLock;/* 0x2c 4 */ struct _KEVENT FxRemoveEvent;/* 0x30 16 */ /* ── cacheline 1 boundary (64 bytes) ── */ volatile long FxActivationCount;/* 0x40 4 */ volatile long FxSleepCount;/* 0x44 4 */ struct _UNICODE_STRING UniqueId;/* 0x48 8 */ struct _POP_FX_PLUGIN* Plugin;/* 0x50 4 */ unsigned long Level;/* 0x54 4 */ union _POWER_STATE CurrentPowerState;/* 0x58 4 */ struct _PO_DEVICE_NOTIFY Notify;/* 0x5c 60 */ /* ── cacheline 2 boundary (128 bytes) ── */ struct _PO_IRP_MANAGER PoIrpManager;/* 0x98 16 */ volatile long PowerFlags;/* 0xa8 4 */ enum _PNP_DEVNODE_STATE State;/* 0xac 4 */ enum _PNP_DEVNODE_STATE PreviousState;/* 0xb0 4 */ enum _PNP_DEVNODE_STATE StateHistory[20];/* 0xb4 80 */ /* ── cacheline 4 boundary (256 bytes) ── */ unsigned long StateHistoryEntry;/* 0x104 4 */ long CompletionStatus;/* 0x108 4 */ unsigned long Flags;/* 0x10c 4 */ unsigned long UserFlags;/* 0x110 4 */ unsigned long Problem;/* 0x114 4 */ long ProblemStatus;/* 0x118 4 */ struct _CM_RESOURCE_LIST* ResourceList;/* 0x11c 4 */ struct _CM_RESOURCE_LIST* ResourceListTranslated;/* 0x120 4 */ struct _DEVICE_OBJECT* DuplicatePDO;/* 0x124 4 */ struct _IO_RESOURCE_REQUIREMENTS_LIST* ResourceRequirements;/* 0x128 4 */ enum _INTERFACE_TYPE InterfaceType;/* 0x12c 4 */ unsigned long BusNumber;/* 0x130 4 */ enum _INTERFACE_TYPE ChildInterfaceType;/* 0x134 4 */ unsigned long ChildBusNumber;/* 0x138 4 */ unsigned short ChildBusTypeIndex;/* 0x13c 2 */ unsigned char RemovalPolicy;/* 0x13e 1 */ unsigned char HardwareRemovalPolicy;/* 0x13f 1 */ /* ── cacheline 5 boundary (320 bytes) ── */ struct _LIST_ENTRY TargetDeviceNotify;/* 0x140 8 */ struct _LIST_ENTRY DeviceArbiterList;/* 0x148 8 */ struct _LIST_ENTRY DeviceTranslatorList;/* 0x150 8 */ unsigned short NoTranslatorMask;/* 0x158 2 */ unsigned short QueryTranslatorMask;/* 0x15a 2 */ unsigned short NoArbiterMask;/* 0x15c 2 */ unsigned short QueryArbiterMask;/* 0x15e 2 */ union { struct _DEVICE_NODE* LegacyDeviceNode;/* 0x160 4 */ struct _DEVICE_RELATIONS* PendingDeviceRelations;/* 0x160 4 */ void* Information;/* 0x160 4 */ } OverUsed1;/* 0x160 4 */ union { struct _DEVICE_NODE* NextResourceDeviceNode;/* 0x164 4 */ } OverUsed2;/* 0x164 4 */ struct _CM_RESOURCE_LIST* BootResources;/* 0x168 4 */ struct _CM_RESOURCE_LIST* BootResourcesTranslated;/* 0x16c 4 */ unsigned long CapabilityFlags;/* 0x170 4 */ struct { enum PROFILE_STATUS DockStatus;/* 0x174 4 */ struct _LIST_ENTRY ListEntry;/* 0x178 8 */ wchar_t* SerialNumber;/* 0x180 4 */ } DockInfo;/* 0x174 16 */ /* ── cacheline 6 boundary (384 bytes) ── */ unsigned long DisableableDepends;/* 0x184 4 */ struct _LIST_ENTRY PendedSetInterfaceState;/* 0x188 8 */ struct _LIST_ENTRY LegacyBusListEntry;/* 0x190 8 */ unsigned long DriverUnloadRetryCount;/* 0x198 4 */ struct _DEVICE_NODE* PreviousParent;/* 0x19c 4 */ long DeletedChildren;/* 0x1a0 4 */ unsigned long NumaNodeIndex;/* 0x1a4 4 */ struct _GUID ContainerID;/* 0x1a8 16 */ unsigned char OverrideFlags;/* 0x1b8 1 */ /* 3 bytes padding */ unsigned long DeviceIdsHash;/* 0x1bc 4 */ /* ── cacheline 7 boundary (448 bytes) ── */ unsigned char RequiresUnloadedDriver;/* 0x1c0 1 */ /* 3 bytes padding */ struct _PENDING_RELATIONS_LIST_ENTRY* PendingEjectRelations;/* 0x1c4 4 */ unsigned long StateFlags;/* 0x1c8 4 */ struct _PNP_REBALANCE_TRACE_CONTEXT* RebalanceContext;/* 0x1cc 4 */ struct _DEVICE_NODE_IOMMU_EXTENSION* IommuExtension;/* 0x1d0 4 */ struct _PO_DIRECTED_DRIPS_STATE DirectedDripsState;/* 0x1d4 32 */};size 500 (0x1f4)69 members2 holes (6 bytes)padding 08 cachelines
Used in (5)