typedef struct _DEVICE_NODE { DEVICE_NODE *Sibling; DEVICE_NODE *Child; DEVICE_NODE *Parent; DEVICE_NODE *LastChild; DEVICE_OBJECT *PhysicalDeviceObject; UNICODE_STRING InstancePath; UNICODE_STRING ServiceName; IRP *PendingIrp; unsigned long Level; PO_DEVICE_NOTIFY Notify; PO_IRP_MANAGER PoIrpManager; PNP_DEVNODE_STATE State; PNP_DEVNODE_STATE PreviousState; PNP_DEVNODE_STATE StateHistory[20]; unsigned long StateHistoryEntry; long CompletionStatus; unsigned long Flags; unsigned long UserFlags; unsigned long Problem; CM_RESOURCE_LIST *ResourceList; CM_RESOURCE_LIST *ResourceListTranslated; DEVICE_OBJECT *DuplicatePDO; IO_RESOURCE_REQUIREMENTS_LIST *ResourceRequirements; INTERFACE_TYPE InterfaceType; unsigned long BusNumber; INTERFACE_TYPE ChildInterfaceType; unsigned long ChildBusNumber; unsigned short ChildBusTypeIndex; unsigned char RemovalPolicy; unsigned char HardwareRemovalPolicy; LIST_ENTRY TargetDeviceNotify; LIST_ENTRY DeviceArbiterList; LIST_ENTRY DeviceTranslatorList; unsigned short NoTranslatorMask; unsigned short QueryTranslatorMask; unsigned short NoArbiterMask; unsigned short QueryArbiterMask; union { DEVICE_NODE *LegacyDeviceNode; DEVICE_RELATIONS *PendingDeviceRelations; void *Information; } OverUsed1; union { DEVICE_NODE *NextResourceDeviceNode; } OverUsed2; CM_RESOURCE_LIST *BootResources; CM_RESOURCE_LIST *BootResourcesTranslated; unsigned long CapabilityFlags; struct { PROFILE_STATUS DockStatus; LIST_ENTRY ListEntry; unsigned short *SerialNumber; } DockInfo; unsigned long DisableableDepends; LIST_ENTRY PendedSetInterfaceState; LIST_ENTRY LegacyBusListEntry; unsigned long DriverUnloadRetryCount; DEVICE_NODE *PreviousParent; unsigned long DeletedChildren; unsigned long NumaNodeIndex; GUID ContainerID; unsigned char OverrideFlags; unsigned char RequiresUnloadedDriver; PENDING_RELATIONS_LIST_ENTRY *PendingEjectRelations; } DEVICE_NODE, *PDEVICE_NODE;