|
WDM Quick Reference
Rev C Red fields are reserved. Numeric values are hex. |
| DRIVER_OBJECT | ||||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0 |
Type (4) |
Size | DeviceObject | Flags | DriverStart | |||||||||||
| 10 |
DriverSize | DriverSection | DriverExtension | Name len |
Name maxlen |
|||||||||||
| 20 |
Name (wide string ptr) |
HardwareDatabase | FastIoDispatch | DriverEntry | ||||||||||||
| 30 |
StartIo | Unload | IRP_MJ_CREATE | IRP_MJ_NAMED_PIPE | ||||||||||||
|
40 |
IRP_MJ_CLOSE | IRP_MJ_READ | IRP_MJ_WRITE | IRP_MJ_QUERY_ INFORMATION |
||||||||||||
| 50 |
IRP_MJ_SET_INFORMATION | IRP_MJ_QUERY_EA | IRP_MJ_SET_EA | IRP_MJ_FLUSH_BUFFERS | ||||||||||||
| 60 |
IRP_MJ_QUERY_VOLUME_ VOLUME_INFORMATION |
IRP_MJ_SET_VOLUME_ INFORMATION |
IRP_MJ_DIRECTORY_ CONTROL |
IRP_MJ_FILE_SYSTEM_ CONTROL |
||||||||||||
| 70 |
IRP_MJ_DEVICE_CONTROL | IRP_MJ_SCSI
/ IRP_MJ_INTERNAL_DEVICE_ CONTROL |
IRP_MJ_SHUTDOWN | IRP_MJ_LOCK_CONTROL | ||||||||||||
|
80 |
IRP_MJ_CLEANUP | IRP_MJ_CREATE_MAILSLOT | IRP_MJ_QUERY_SECURITY | IRP_MJ_SET_SECURITY | ||||||||||||
| 90 |
IRP_MJ_POWER | IRP_MJ_SYSTEM_CONTROL | IRP_MJ_DEVICE_CHANGE | IRP_MJ_QUERY_QUOTA | ||||||||||||
| A0 |
IRP_MJ_SET_QUOTA | IRP_MJ_PNP | ||||||||||||||
|
Flags |
|
|
Mask |
Name |
| 1 | DRVO_UNLOAD_INVOKED |
| 2 | DRVO_LEGACY_DRIVER |
| 4 | DRVO_BUILTIN_DRIVER |
| 8 | DRVO_REINIT_REGISTERED |
| 10 | DRVO_INITIALIZED |
| 20 | DRVO_BOOTREINIT_REGISTERED |
| 40 | DRVO_LEGACY_RESOURCES |
| DEVICE_OBJECT | ||||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0 |
Type (3) |
Size | Ref Count | DriverObject | NextDev | |||||||||||
| 10 |
AttachedDev | CurrentIrp | Timer | Flags | ||||||||||||
| 20 |
Characteristics | VPB | DeviceExtension | DevType | ||||||||||||
|
30 |
Stk Siz |
Queue.ListEntry
/ Queue.WaitContextBlock |
||||||||||||||
| 40 |
... | |||||||||||||||
| 50 |
... | Alignment (reverse mask) |
||||||||||||||
| 60 |
DeviceQueue | |||||||||||||||
|
70 |
... | DPC | ||||||||||||||
| 80 |
... | |||||||||||||||
| 90 |
... | ActiveThreads | SecurityDesc | DeviceLock | ||||||||||||
| A0 |
... | Sector Size |
Spare1 | |||||||||||||
| B0 |
DevObjExtension | Reserved | ||||||||||||||
|
Mask |
Name |
| 1 | DO_UNLOAD_PENDING |
| 2 | DO_VERIFY_VOLUME |
| 4 | DO_BUFFERED_IO |
| 8 | DO_EXCLUSIVE |
| 10 | DO_DIRECT_IO |
| 20 | DO_MAP_IO_BUFFER |
| 40 | DO_DEVICE_HAS_NAME |
| 80 | DO_DEVICE_INITIALIZING |
| 100 | DO_SYSTEM_BOOT_PARTITION |
| 200 | DO_LONG_TERM_REQUESTS |
| 400 | DO_NEVER_LAST_DEVICE |
| 800 | DO_SHUTDOWN_REGISTERED |
| 1000 | DO_BUS_ENUMERATED_DEVICE |
| 2000 | DO_POWER_PAGABLE |
| 4000 | DO_POWER_INRUSH |
| 10000 | DO_LOW_PRIORITY_FILESYSTEM |
| IRP | ||||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|
0 |
Type (6) |
Size | Mdl | Flags |
MasterIrp/IrpCount/ SystemBuffer |
|||||||||||
|
10 |
Thread.Flink | Thread.Blink | IoStatus.Status | IoStatus.Information | ||||||||||||
|
20 |
Req Mode |
Pnd Ret |
Stak Cnt |
Cur Stak |
Can cel |
Can Irql |
Apc Env |
Alloc Flgs |
*UserIoStatus | *UserEvent | ||||||
|
30 |
UserApcProc/ AllocSize |
UserApcContext/ AllocSize |
CancelRoutine | UserBuffer | ||||||||||||
|
40 |
Context[0] | Context[1] | Context[2] | Context[3] | ||||||||||||
|
50 |
Thread | AuxBuf | List.Flink | List.Blink | ||||||||||||
|
60 |
IO_STACK_LOC
/ PacketType |
OriginalFileObject | ||||||||||||||
| IRQL | |
| Value | Name |
| 0 |
PASSIVE_LEVEL |
| 1 |
APC_LEVEL |
| 2 |
DISPATCH_LEVEL |
| 7 |
HIGH_LEVEL |
| `b |
PROFILE_LEVEL |
| 1c |
CLOCK1_LEVEL |
| 1d |
IPI_LEVEL |
| 1e |
POWER_LEVEL |
| 1f |
HIGH_LEVEL |
| IO_STACK_LOCATION | ||||||||||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|
0 |
MJ | MN | Flg | Ctl |
Arg1 (BufLenOut/...) |
Arg2 (BufLenIn/...) |
Arg3 (IOCTL/...) |
|||||||||
|
10 |
Arg4 (Type3InputBuf/...) |
DeviceObject | FileObject | CompletionProc | ||||||||||||
|
20 |
Context | |||||||||||||||
| Flags | |
| Mask | Name |
| 01 | SL_PENDING_RETURNED |
| 20 | SL_INVOKE_ON_CANCEL |
| 40 | SL_INVOKE_ON_SUCCESS |
| 80 | SL_INVOKE_ON_ERROR |
| MJ | [MN] Name |
| 0 | IRP_MJ_CREATE |
| 1 | IRP_MJ_NAMED_PIPE |
| 2 | IRP_MJ_CLOSE |
| 3 | IRP_MJ_READ |
| 4 | IRP_MJ_WRITE |
| 5 | IRP_MJ_QUERY_INFORMATION |
| 6 | IRP_MJ_SET_INFORMATION |
| 7 | IRP_MJ_QUERY_EA |
| 8 | IRP_MJ_SET_EA |
| 9 | IRP_MJ_FLUSH_BUFFERS |
| a | IRP_MJ_QUERY_VOLUME_INFORMATION |
| b | IRP_MJ_SET_VOLUME_INFORMATION |
| c | IRP_MJ_DIRECTORY_CONTROL |
| d | IRP_MJ_FILE_SYSTEM_CONTROL |
| e | IRP_MJ_DEVICE_CONTROL |
| f | IRP_MJ_INTERNAL_DEVICE_CONTROL / IRP_MJ_SCSI [00] IRP_MN_SCSI_CLASS [01] IRP_MN_SCSI_CLASS |
| 10 | IRP_MJ_SHUTDOWN |
| 11 | IRP_MJ_LOCK_CONTROL |
| 12 | IRP_MJ_CLEANUP |
| 13 | IRP_MJ_CREATE_MAILSLOT |
| 14 | IRP_MJ_QUERY_SECURITY |
| 15 | IRP_MJ_SET_SECURITY |
| 16 | IRP_MJ_POWER [00] IRP_MN_WAIT_WAKE [01] IRP_MN_POWER_SEQUENCE [02] IRP_MN_SET_POWER [03] IRP_MN_QUERY_POWER |
| 17 | IRP_MJ_SYSTEM_CONTROL [00] IRP_MN_QUERY_ALL_DATA [01] IRP_MN_QUERY_SINGLE_INSTANCE [02] IRP_MN_CHANGE_SINGLE_INSTANCE [03] IRP_MN_CHANGE_SINGLE_ITEM [04] IRP_MN_ENABLE_EVENTS [05] IRP_MN_DISABLE_EVENTS [06] IRP_MN_ENABLE_COLLECTION [07] IRP_MN_DISABLE_COLLECTION [08] IRP_MN_REGINFO [09] IRP_MN_EXECUTE_METHOD [0a] reserved [0b] IRP_MN_REGINFO_EX |
| 18 | IRP_MJ_DEVICE_CHANGE |
| 19 | IRP_MJ_QUERY_QUOTA |
| 1a | IRP_MJ_SET_QUOTA |
| 1b | IRP_MJ_PNP / IRP_MJ_PNP_POWER / IRP_MJ_MAXIMUM_FUNCTION [00] IRP_MN_START_DEVICE [01] IRP_MN_QUERY_REMOVE_DEVICE [02] IRP_MN_REMOVE_DEVICE [03] IRP_MN_CANCEL_REMOVE_DEVICE [04] IRP_MN_STOP_DEVICE [05] IRP_MN_QUERY_STOP_DEVICE [06] IRP_MN_CANCEL_STOP_DEVICE [07] IRP_MN_QUERY_DEVICE_RELATIONS [08] IRP_MN_QUERY_INTERFACE [09] IRP_MN_QUERY_CAPABILITIES [0A] IRP_MN_QUERY_RESOURCES [0B] IRP_MN_QUERY_RESOURCE_REQUIREMENTS [0C] IRP_MN_QUERY_DEVICE_TEXT [0D] IRP_MN_FILTER_RESOURCE_REQUIREMENTS [0E] [0F] IRP_MN_READ_CONFIG [10] IRP_MN_WRITE_CONFIG [11] IRP_MN_EJECT [12] IRP_MN_SET_LOCK [13] IRP_MN_QUERY_ID [14] IRP_MN_QUERY_PNP_DEVICE_STATE [15] IRP_MN_QUERY_BUS_INFORMATION [16] IRP_MN_DEVICE_USAGE_NOTIFICATION [17] IRP_MN_SURPRISE_REMOVAL [18] IRP_MN_QUERY_LEGACY_BUS_INFORMATION [87] IRP_MN_BUS_RESET (1394) |
| DevType |
| See DEVICE_OBJECT DevType Table |
| Access | |
| Mask | Name |
| 00 | FILE_ANY_ACCESS FILE_SPECIAL_ACCESS |
| 01 | FILE_READ_ACCESS |
| 02 | FILE_WRITE_ACCESS |
| Method | |
| Value | Name |
| 0 | METHOD_BUFFERED |
| 1 | METHOD_IN_DIRECT |
| 2 | METHOD_OUT_DIRECT |
| 3 | METHOD_NEITHER |