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