struct _IRP {
short Type;/* 0x0 2 */
unsigned short Size;/* 0x2 2 */
struct _MDL* MdlAddress;/* 0x4 4 */ unsigned long Flags;/* 0x8 4 */
union {
struct _IRP* MasterIrp;/* 0xc 4 */ long IrpCount;/* 0xc 4 */
void* SystemBuffer;/* 0xc 4 */
} AssociatedIrp;/* 0xc 4 */
char RequestorMode;/* 0x20 1 */
unsigned char PendingReturned;/* 0x21 1 */
char StackCount;/* 0x22 1 */
char CurrentLocation;/* 0x23 1 */
unsigned char Cancel;/* 0x24 1 */
unsigned char CancelIrql;/* 0x25 1 */
char ApcEnvironment;/* 0x26 1 */
unsigned char AllocationFlags;/* 0x27 1 */
struct _KEVENT* UserEvent;/* 0x2c 4 */ union {
struct {
union {
void (*UserApcRoutine)(void*, struct _IO_STATUS_BLOCK*, unsigned long);/* 0x30 4 */ void* IssuingProcess;/* 0x30 4 */
};/* 0x30 4 */
void* UserApcContext;/* 0x34 4 */
} AsynchronousParameters;/* 0x30 8 */
} Overlay;/* 0x30 8 */
void* UserBuffer;/* 0x3c 4 */
/* ── cacheline 1 boundary (64 bytes) ── */
union {
struct {
union {
void* DriverContext[4];/* 0x40 16 */
};/* 0x40 16 */
char* AuxiliaryBuffer;/* 0x54 4 */
union {
unsigned long PacketType;/* 0x60 4 */
};/* 0x60 4 */
void* IrpExtension;/* 0x68 4 */
} Overlay;/* 0x40 44 */
struct _KAPC Apc;/* 0x40 48 */ void* CompletionKey;/* 0x40 4 */
} Tail;/* 0x40 48 */
};