struct _DEVICE_OBJECT { short Type;/* 0x0 2 */ unsigned short Size;/* 0x2 2 */ long ReferenceCount;/* 0x4 4 */ struct _DRIVER_OBJECT* DriverObject;/* 0x8 8 */ struct _DEVICE_OBJECT* NextDevice;/* 0x10 8 */ struct _DEVICE_OBJECT* AttachedDevice;/* 0x18 8 */ struct _IRP* CurrentIrp;/* 0x20 8 */ struct _IO_TIMER* Timer;/* 0x28 8 */ unsigned long Flags;/* 0x30 4 */ unsigned long Characteristics;/* 0x34 4 */ struct _VPB* Vpb;/* 0x38 8 */ /* ── cacheline 1 boundary (64 bytes) ── */ void* DeviceExtension;/* 0x40 8 */ unsigned long DeviceType;/* 0x48 4 */ char StackSize;/* 0x4c 1 */ /* 3 bytes padding */ union { struct _LIST_ENTRY ListEntry;/* 0x50 16 */ struct _WAIT_CONTEXT_BLOCK Wcb;/* 0x50 72 */ } Queue;/* 0x50 72 */ /* ── cacheline 2 boundary (128 bytes) ── */ unsigned long AlignmentRequirement;/* 0x98 4 */ /* 4 bytes padding */ struct _KDEVICE_QUEUE DeviceQueue;/* 0xa0 40 */ /* ── cacheline 3 boundary (192 bytes) ── */ struct _KDPC Dpc;/* 0xc8 64 */ /* ── cacheline 4 boundary (256 bytes) ── */ unsigned long ActiveThreadCount;/* 0x108 4 */ /* 4 bytes padding */ void* SecurityDescriptor;/* 0x110 8 */ struct _KEVENT DeviceLock;/* 0x118 24 */ unsigned short SectorSize;/* 0x130 2 */ unsigned short Spare1;/* 0x132 2 */ /* 4 bytes padding */ struct _DEVOBJ_EXTENSION* DeviceObjectExtension;/* 0x138 8 */ /* ── cacheline 5 boundary (320 bytes) ── */ void* Reserved;/* 0x140 8 */};size 336 (0x150)25 members4 holes (15 bytes)padding 86 cachelines
Used in (8)