changes in IRP for compatibility
[reactos.git] / reactos / include / ddk / iodef.h
1 #ifndef __INCLUDE_DDK_IODEF_H
2 #define __INCLUDE_DDK_IODEF_H
3
4 typedef enum _IO_QUERY_DEVICE_DESCRIPTION
5 {
6 IoQueryDeviceIdentifier = 0,
7 IoQueryDeviceConfigurationData,
8 IoQueryDeviceComponentInformation,
9 IoQueryDeviceDataFormatMaximum,
10 } IO_QUERY_DEVICE_DESCRIPTION, *PIO_QUERY_DEVICE_DESCRIPTION;
11
12 typedef enum _CONFIGURATION_TYPE
13 {
14 DiskController,
15 ParallelController,
16 MaximumType,
17 } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
18
19 typedef enum _CM_RESOURCE_TYPE
20 {
21 CmResourceTypePort = 1,
22 CmResourceTypeInterrupt,
23 CmResourceTypeMemory,
24 CmResourceTypeDma,
25 CmResourceTypeDeviceSpecific,
26 CmResourceTypeMaximum,
27 } CM_RESOURCE_TYPE;
28
29 typedef enum _CM_SHARE_DISPOSITION
30 {
31 CmResourceShareDeviceExclusive = 1,
32 CmResourceShareDriverExclusive,
33 CmResourceShareShared,
34 CmResourceShareMaximum,
35 } CM_SHARE_DISPOSITION;
36
37 enum
38 {
39 CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE,
40 CM_RESOURCE_INTERRUPT_LATCHED,
41 };
42
43 enum
44 {
45 CM_RESOURCE_PORT_MEMORY,
46 CM_RESOURCE_PORT_IO,
47 };
48
49 /*
50 * PURPOSE: Irp flags
51 */
52 enum
53 {
54 IRP_NOCACHE = 0x1,
55 IRP_PAGING_IO = 0x2,
56 IRP_MOUNT_COMPLETION = 0x4,
57 IRP_SYNCHRONOUS_API = 0x8,
58 IRP_ASSOCIATED_IRP = 0x10,
59 IRP_BUFFERED_IO = 0x20,
60 IRP_DEALLOCATE_BUFFER = 0x40,
61 IRP_INPUT_OPERATION = 0x80,
62 IRP_SYNCHRONOUS_PAGING_IO = 0x100,
63 IRP_CREATE_OPERATION = 0x200,
64 IRP_READ_OPERATION = 0x400,
65 IRP_WRITE_OPERATION = 0x800,
66 IRP_CLOSE_OPERATION = 0x1000,
67 IRP_DEFER_IO_COMPLETION = 0x2000,
68 };
69
70 #define SL_FORCE_ACCESS_CHECK (0x1)
71 #define SL_OPEN_PAGING_FILE (0x2)
72 #define SL_OPEN_TARGET_DIRECTORY (0x4)
73 #define SL_CASE_SENSITIVE (0x80)
74
75 #define SL_KEY_SPECIFIED (0x1)
76 #define SL_OVERRIDE_VERIFY_VOLUME (0x2)
77 #define SL_WRITE_THROUGHT (0x4)
78 #define SL_FT_SEQUENTIAL_WRITE (0x8)
79
80 #define SL_FAIL_IMMEDIATELY (0x1)
81 #define SL_EXCLUSIVE_LOCK (0x2)
82
83 #define SL_WATCH_TREE (0x1)
84
85 #define SL_RESTART_SCAN (0x1)
86 #define SL_RETURN_SINGLE_ENTRY (0x2)
87 #define SL_INDEX_SPECIFIED (0x4)
88
89 #define SL_ALLOW_RAW_MOUNT (0x1)
90
91 #define SL_PENDING_RETURNED 0x01
92 #define SL_INVOKE_ON_CANCEL 0x20
93 #define SL_INVOKE_ON_SUCCESS 0x40
94 #define SL_INVOKE_ON_ERROR 0x80
95
96 /*
97 * Possible flags for the device object flags
98 */
99 #define DO_UNLOAD_PENDING 0x00000001
100 #define DO_VERIFY_VOLUME 0x00000002
101 #define DO_BUFFERED_IO 0x00000004
102 #define DO_EXCLUSIVE 0x00000008
103 #define DO_DIRECT_IO 0x00000010
104 #define DO_MAP_IO_BUFFER 0x00000020
105 #define DO_DEVICE_HAS_NAME 0x00000040
106 #define DO_DEVICE_INITIALIZING 0x00000080
107 #define DO_SYSTEM_BOOT_PARTITION 0x00000100
108 #define DO_LONG_TERM_REQUESTS 0x00000200
109 #define DO_NEVER_LAST_DEVICE 0x00000400
110 #define DO_SHUTDOWN_REGISTERED 0x00000800
111
112 /*
113 * Possible device types
114 */
115 #define FILE_DEVICE_BEEP 0x00000001
116 #define FILE_DEVICE_CD_ROM 0x00000002
117 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
118 #define FILE_DEVICE_CONTROLLER 0x00000004
119 #define FILE_DEVICE_DATALINK 0x00000005
120 #define FILE_DEVICE_DFS 0x00000006
121 #define FILE_DEVICE_DISK 0x00000007
122 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
123 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
124 #define FILE_DEVICE_INPORT_PORT 0x0000000a
125 #define FILE_DEVICE_KEYBOARD 0x0000000b
126 #define FILE_DEVICE_MAILSLOT 0x0000000c
127 #define FILE_DEVICE_MIDI_IN 0x0000000d
128 #define FILE_DEVICE_MIDI_OUT 0x0000000e
129 #define FILE_DEVICE_MOUSE 0x0000000f
130 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
131 #define FILE_DEVICE_NAMED_PIPE 0x00000011
132 #define FILE_DEVICE_NETWORK 0x00000012
133 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
134 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
135 #define FILE_DEVICE_NULL 0x00000015
136 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
137 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
138 #define FILE_DEVICE_PRINTER 0x00000018
139 #define FILE_DEVICE_SCANNER 0x00000019
140 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
141 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
142 #define FILE_DEVICE_SCREEN 0x0000001c
143 #define FILE_DEVICE_SOUND 0x0000001d
144 #define FILE_DEVICE_STREAMS 0x0000001e
145 #define FILE_DEVICE_TAPE 0x0000001f
146 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
147 #define FILE_DEVICE_TRANSPORT 0x00000021
148 #define FILE_DEVICE_UNKNOWN 0x00000022
149 #define FILE_DEVICE_VIDEO 0x00000023
150 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
151 #define FILE_DEVICE_WAVE_IN 0x00000025
152 #define FILE_DEVICE_WAVE_OUT 0x00000026
153 #define FILE_DEVICE_8042_PORT 0x00000027
154 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
155 #define FILE_DEVICE_BATTERY 0x00000029
156 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
157 #define FILE_DEVICE_MODEM 0x0000002b
158 #define FILE_DEVICE_VDM 0x0000002c
159
160 #define FILE_REMOVABLE_MEDIA 0x00000001
161 #define FILE_READ_ONLY_DEVICE 0x00000002
162 #define FILE_FLOPPY_DISKETTE 0x00000004
163 #define FILE_WRITE_ONCE_MEDIA 0x00000008
164 #define FILE_REMOTE_DEVICE 0x00000010
165 #define FILE_DEVICE_IS_MOUNTED 0x00000020
166 #define FILE_VIRTUAL_VOLUME 0x00000040
167
168
169 /*
170 * PURPOSE: Bus types
171 */
172 typedef enum _INTERFACE_TYPE
173 {
174 InterfaceTypeUndefined = -1,
175 Internal,
176 Isa,
177 Eisa,
178 MicroChannel,
179 TurboChannel,
180 PCIBus,
181 VMEBus,
182 NuBus,
183 PCMCIABus,
184 CBus,
185 MPIBus,
186 MPSABus,
187 ProcessorInternal,
188 InternalPowerBus,
189 PNPISABus,
190 MaximumInterfaceType
191 } INTERFACE_TYPE, *PINTERFACE_TYPE;
192
193
194 /*
195 * FIXME: These are not in the correct order
196 */
197 enum
198 {
199 IRP_MJ_CREATE,
200 IRP_MJ_CREATE_NAMED_PIPE,
201 IRP_MJ_CLOSE,
202 IRP_MJ_READ,
203 IRP_MJ_WRITE,
204 IRP_MJ_QUERY_INFORMATION,
205 IRP_MJ_SET_INFORMATION,
206 IRP_MJ_QUERY_EA,
207 IRP_MJ_SET_EA,
208 IRP_MJ_FLUSH_BUFFERS,
209 IRP_MJ_QUERY_VOLUME_INFORMATION,
210 IRP_MJ_SET_VOLUME_INFORMATION,
211 IRP_MJ_DIRECTORY_CONTROL,
212 IRP_MJ_FILE_SYSTEM_CONTROL,
213 IRP_MJ_DEVICE_CONTROL,
214 IRP_MJ_INTERNAL_DEVICE_CONTROL,
215 IRP_MJ_SHUTDOWN,
216 IRP_MJ_LOCK_CONTROL,
217 IRP_MJ_CLEANUP,
218 IRP_MJ_CREATE_MAILSLOT,
219 IRP_MJ_QUERY_SECURITY,
220 IRP_MJ_SET_SECURITY,
221 IRP_MJ_QUERY_POWER,//IRP_MJ_POWER ?
222 IRP_MJ_SET_POWER,//IRP_MJ_SYSTEM_CONTROL ?
223 IRP_MJ_DEVICE_CHANGE,
224 IRP_MJ_QUERY_QUOTA,
225 IRP_MJ_SET_QUOTA,
226 IRP_MJ_PNP_POWER,//=IRP_MJ_PNP
227 IRP_MJ_MAXIMUM_FUNCTION,
228 };
229
230 /*
231 * Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
232 */
233 #define IRP_MN_USER_FS_REQUEST 0x00
234 #define IRP_MN_MOUNT_VOLUME 0x01
235 #define IRP_MN_VERIFY_VOLUME 0x02
236 #define IRP_MN_LOAD_FILE_SYSTEM 0x03
237
238 #define IO_DISK_INCREMENT 4
239
240 #define FILE_WORD_ALIGNMENT 0x0001
241
242 /*
243 * File disposition values
244 */
245 #define FILE_SUPERSEDED 0x0000
246 #define FILE_OPENED 0x0001
247 #define FILE_CREATED 0x0002
248 #define FILE_OVERWRITTEN 0x0003
249 #define FILE_EXISTS 0x0004
250 #define FILE_DOES_NOT_EXIST 0x0005
251
252
253 /*
254 * file creation flags
255 */
256 #define FILE_DIRECTORY_FILE 0x00000001
257 #define FILE_WRITE_THROUGH 0x00000002
258 #define FILE_SEQUENTIAL_ONLY 0x00000004
259 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
260
261 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
262 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
263 #define FILE_NON_DIRECTORY_FILE 0x00000040
264 #define FILE_CREATE_TREE_CONNECTION 0x00000080
265
266 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
267 #define FILE_NO_EA_KNOWLEDGE 0x00000200
268
269 #define FILE_RANDOM_ACCESS 0x00000800
270
271 #define FILE_DELETE_ON_CLOSE 0x00001000
272 #define FILE_OPEN_BY_FILE_ID 0x00002000
273 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
274 #define FILE_NO_COMPRESSION 0x00008000
275
276 #define FILE_RESERVE_OPFILTER 0x00100000
277 #define FILE_TRANSACTED_MODE 0x00200000
278 #define FILE_OPEN_OFFLINE_FILE 0x00400000
279
280 #define FILE_VALID_OPTION_FLAGS 0x007fffff
281 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
282 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
283 #define FILE_VALID_SET_FLAGS 0x00001036
284
285
286 typedef ULONG FS_INFORMATION_CLASS;
287
288 /*
289 * file system information class values
290 */
291 #define FileFsVolumeInformation 1
292 #define FileFsLabelInformation 2
293 #define FileFsSizeInformation 3
294 #define FileFsDeviceInformation 4
295 #define FileFsAttributeInformation 5
296 #define FileFsControlInformation 6
297 #define FileFsQuotaQueryInformation 7
298 #define FileFsQuotaSetInformation 8
299 #define FileFsMaximumInformation 9
300
301 #define IRP_MN_QUERY_DIRECTORY 0x01
302 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
303
304 #endif