1// 2// Define the major function codes for IRPs. 3// 4 5 6#define IRP_MJ_CREATE 0x00 7#define IRP_MJ_CREATE_NAMED_PIPE 0x01 8#define IRP_MJ_CLOSE 0x02 9#define IRP_MJ_READ 0x03 10#define IRP_MJ_WRITE 0x04 11#define IRP_MJ_QUERY_INFORMATION 0x05 12#define IRP_MJ_SET_INFORMATION 0x06 13#define IRP_MJ_QUERY_EA 0x07 14#define IRP_MJ_SET_EA 0x08 15#define IRP_MJ_FLUSH_BUFFERS 0x09 16#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a 17#define IRP_MJ_SET_VOLUME_INFORMATION 0x0b 18#define IRP_MJ_DIRECTORY_CONTROL 0x0c 19#define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d 20#define IRP_MJ_DEVICE_CONTROL 0x0e 21#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f 22#define IRP_MJ_SHUTDOWN 0x10 23#define IRP_MJ_LOCK_CONTROL 0x11 24#define IRP_MJ_CLEANUP 0x12 25#define IRP_MJ_CREATE_MAILSLOT 0x13 26#define IRP_MJ_QUERY_SECURITY 0x14 27#define IRP_MJ_SET_SECURITY 0x15 28#define IRP_MJ_POWER 0x16 29#define IRP_MJ_SYSTEM_CONTROL 0x17 30#define IRP_MJ_DEVICE_CHANGE 0x18 31#define IRP_MJ_QUERY_QUOTA 0x19 32#define IRP_MJ_SET_QUOTA 0x1a 33#define IRP_MJ_PNP 0x1b 34#define IRP_MJ_PNP_POWER IRP_MJ_PNP // Obsolete.... 35#define IRP_MJ_MAXIMUM_FUNCTION 0x1b 36 37// 38// Make the Scsi major code the same as internal device control. 39// 40 41#define IRP_MJ_SCSI IRP_MJ_INTERNAL_DEVICE_CONTROL 42 43// 44// Define the minor function codes for IRPs. The lower 128 codes, from 0x00 to 45// 0x7f are reserved to Microsoft. The upper 128 codes, from 0x80 to 0xff, are 46// reserved to customers of Microsoft. 47// 48 49// 50// Device Control Request minor function codes for SCSI support. Note that 51// user requests are assumed to be zero. 52// 53 54#define IRP_MN_SCSI_CLASS 0x01 55 56// 57// PNP minor function codes. 58// 59 60#define IRP_MN_START_DEVICE 0x00 61#define IRP_MN_QUERY_REMOVE_DEVICE 0x01 62#define IRP_MN_REMOVE_DEVICE 0x02 63#define IRP_MN_CANCEL_REMOVE_DEVICE 0x03 64#define IRP_MN_STOP_DEVICE 0x04 65#define IRP_MN_QUERY_STOP_DEVICE 0x05 66#define IRP_MN_CANCEL_STOP_DEVICE 0x06 67 68#define IRP_MN_QUERY_DEVICE_RELATIONS 0x07 69#define IRP_MN_QUERY_INTERFACE 0x08 70#define IRP_MN_QUERY_CAPABILITIES 0x09 71#define IRP_MN_QUERY_RESOURCES 0x0A 72#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B 73#define IRP_MN_QUERY_DEVICE_TEXT 0x0C 74#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D 75 76#define IRP_MN_READ_CONFIG 0x0F 77#define IRP_MN_WRITE_CONFIG 0x10 78#define IRP_MN_EJECT 0x11 79#define IRP_MN_SET_LOCK 0x12 80#define IRP_MN_QUERY_ID 0x13 81#define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 82#define IRP_MN_QUERY_BUS_INFORMATION 0x15 83#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 84#define IRP_MN_SURPRISE_REMOVAL 0x17 85 86// 87// POWER minor function codes 88// 89#define IRP_MN_WAIT_WAKE 0x00 90#define IRP_MN_POWER_SEQUENCE 0x01 91#define IRP_MN_SET_POWER 0x02 92#define IRP_MN_QUERY_POWER 0x03 93 94 95// 96// WMI minor function codes under IRP_MJ_SYSTEM_CONTROL 97// 98 99#define IRP_MN_QUERY_ALL_DATA 0x00 100#define IRP_MN_QUERY_SINGLE_INSTANCE 0x01 101#define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02 102#define IRP_MN_CHANGE_SINGLE_ITEM 0x03 103#define IRP_MN_ENABLE_EVENTS 0x04 104#define IRP_MN_DISABLE_EVENTS 0x05 105#define IRP_MN_ENABLE_COLLECTION 0x06 106#define IRP_MN_DISABLE_COLLECTION 0x07 107#define IRP_MN_REGINFO 0x08 108#define IRP_MN_EXECUTE_METHOD 0x09 109// Minor code 0x0a is reserved 110#define IRP_MN_REGINFO_EX 0x0b 111 112 113