This commit was generated by cvs2svn to compensate for changes in r52,
[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 /*
71 * I/O operation flags
72 */
73 enum
74 {
75 SL_FORCE_ACCESS_CHECK = 0x1,
76 SL_OPEN_PAGING_FILE = 0x2,
77 SL_OPEN_TARGET_DIRECTORY = 0x4,
78 SL_CASE_SENSITIVE = 0x8,
79 SL_KEY_SPECIFIED = 0x10,
80 SL_OVERRIDE_VERIFY_VOLUME = 0x20,
81 SL_WRITE_THROUGH = 0x40,
82 SL_FT_SEQUENTIAL_WRITE = 0x80,
83 SL_FAIL_IMMEDIATELY = 0x100,
84 SL_EXCLUSIVE_LOCK = 0x200,
85 SL_RESTART_SCAN = 0x400,
86 SL_RETURN_SINGLE_ENTRY = 0x800,
87 SL_INDEX_SPECIFIED = 0x1000,
88 SL_WATCH_TREE = 0x2000,
89 SL_ALLOW_RAW_MOUNT = 0x4000,
90 };
91
92 #define SL_PENDING_RETURNED 0x01
93 #define SL_INVOKE_ON_CANCEL 0x20
94 #define SL_INVOKE_ON_SUCCESS 0x40
95 #define SL_INVOKE_ON_ERROR 0x80
96
97 /*
98 * Possible flags for the device object flags
99 */
100 enum
101 {
102 DO_BUFFERED_IO = 0x1,
103 DO_DIRECT_IO = 0x2,
104 };
105
106 /*
107 * Possible device types
108 */
109 #define FILE_DEVICE_BEEP 0x00000001
110 #define FILE_DEVICE_CD_ROM 0x00000002
111 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
112 #define FILE_DEVICE_CONTROLLER 0x00000004
113 #define FILE_DEVICE_DATALINK 0x00000005
114 #define FILE_DEVICE_DFS 0x00000006
115 #define FILE_DEVICE_DISK 0x00000007
116 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
117 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
118 #define FILE_DEVICE_INPORT_PORT 0x0000000a
119 #define FILE_DEVICE_KEYBOARD 0x0000000b
120 #define FILE_DEVICE_MAILSLOT 0x0000000c
121 #define FILE_DEVICE_MIDI_IN 0x0000000d
122 #define FILE_DEVICE_MIDI_OUT 0x0000000e
123 #define FILE_DEVICE_MOUSE 0x0000000f
124 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
125 #define FILE_DEVICE_NAMED_PIPE 0x00000011
126 #define FILE_DEVICE_NETWORK 0x00000012
127 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
128 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
129 #define FILE_DEVICE_NULL 0x00000015
130 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
131 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
132 #define FILE_DEVICE_PRINTER 0x00000018
133 #define FILE_DEVICE_SCANNER 0x00000019
134 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
135 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
136 #define FILE_DEVICE_SCREEN 0x0000001c
137 #define FILE_DEVICE_SOUND 0x0000001d
138 #define FILE_DEVICE_STREAMS 0x0000001e
139 #define FILE_DEVICE_TAPE 0x0000001f
140 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
141 #define FILE_DEVICE_TRANSPORT 0x00000021
142 #define FILE_DEVICE_UNKNOWN 0x00000022
143 #define FILE_DEVICE_VIDEO 0x00000023
144 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
145 #define FILE_DEVICE_WAVE_IN 0x00000025
146 #define FILE_DEVICE_WAVE_OUT 0x00000026
147 #define FILE_DEVICE_8042_PORT 0x00000027
148 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
149 #define FILE_DEVICE_BATTERY 0x00000029
150 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
151 #define FILE_DEVICE_MODEM 0x0000002b
152 #define FILE_DEVICE_VDM 0x0000002c
153
154 #define FILE_REMOVABLE_MEDIA 0x00000001
155 #define FILE_READ_ONLY_DEVICE 0x00000002
156 #define FILE_FLOPPY_DISKETTE 0x00000004
157 #define FILE_WRITE_ONCE_MEDIA 0x00000008
158 #define FILE_REMOTE_DEVICE 0x00000010
159 #define FILE_DEVICE_IS_MOUNTED 0x00000020
160 #define FILE_VIRTUAL_VOLUME 0x00000040
161
162
163 /*
164 * PURPOSE: Bus types
165 */
166 enum
167 {
168 Internal,
169 Isa,
170 MicroChannel,
171 TurboChannel,
172 PCIBus,
173 MaximumInterfaceType,
174 };
175
176 /*
177 * FIXME: These are not in the correct order
178 */
179 enum
180 {
181 IRP_MJ_CREATE,
182 IRP_MJ_CREATE_NAMED_PIPE,
183 IRP_MJ_CLOSE,
184 IRP_MJ_READ,
185 IRP_MJ_WRITE,
186 IRP_MJ_QUERY_INFORMATION,
187 IRP_MJ_SET_INFORMATION,
188 IRP_MJ_QUERY_EA,
189 IRP_MJ_SET_EA,
190 IRP_MJ_FLUSH_BUFFERS,
191 IRP_MJ_QUERY_VOLUME_INFORMATION,
192 IRP_MJ_SET_VOLUME_INFORMATION,
193 IRP_MJ_DIRECTORY_CONTROL,
194 IRP_MJ_FILE_SYSTEM_CONTROL,
195 IRP_MJ_DEVICE_CONTROL,
196 IRP_MJ_INTERNAL_DEVICE_CONTROL,
197 IRP_MJ_SHUTDOWN,
198 IRP_MJ_LOCK_CONTROL,
199 IRP_MJ_CLEANUP,
200 IRP_MJ_CREATE_MAILSLOT,
201 IRP_MJ_QUERY_SECURITY,
202 IRP_MJ_SET_SECURITY,
203 IRP_MJ_QUERY_POWER,
204 IRP_MJ_SET_POWER,
205 IRP_MJ_DEVICE_CHANGE,
206 IRP_MJ_QUERY_QUOTA,
207 IRP_MJ_SET_QUOTA,
208 IRP_MJ_PNP_POWER,
209 IRP_MJ_MAXIMUM_FUNCTION,
210 };
211
212 /*
213 * Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
214 */
215 #define IRP_MN_USER_FS_REQUEST 0x00
216 #define IRP_MN_MOUNT_VOLUME 0x01
217 #define IRP_MN_VERIFY_VOLUME 0x02
218 #define IRP_MN_LOAD_FILE_SYSTEM 0x03
219
220 #define IO_DISK_INCREMENT 4
221
222 #define FILE_WORD_ALIGNMENT 0x0001
223
224 /*
225 * File disposition values
226 */
227 #define FILE_CREATED 0x0000
228 #define FILE_OPENED 0x0001
229 #define FILE_OVERWRITTEN 0x0002
230 #define FILE_SUPERSEDED 0x0003
231 #define FILE_DOES_NOT_EXIST 0x0004
232
233
234 /*
235 * file creation flags
236 */
237 #define FILE_DIRECTORY_FILE 0x00000001
238 #define FILE_WRITE_THROUGH 0x00000002
239 #define FILE_SEQUENTIAL_ONLY 0x00000004
240 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
241
242 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
243 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
244 #define FILE_NON_DIRECTORY_FILE 0x00000040
245 #define FILE_CREATE_TREE_CONNECTION 0x00000080
246
247 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
248 #define FILE_NO_EA_KNOWLEDGE 0x00000200
249
250 #define FILE_RANDOM_ACCESS 0x00000800
251
252 #define FILE_DELETE_ON_CLOSE 0x00001000
253 #define FILE_OPEN_BY_FILE_ID 0x00002000
254 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
255 #define FILE_NO_COMPRESSION 0x00008000
256
257 #define FILE_RESERVE_OPFILTER 0x00100000
258 #define FILE_TRANSACTED_MODE 0x00200000
259 #define FILE_OPEN_OFFLINE_FILE 0x00400000
260
261 #define FILE_VALID_OPTION_FLAGS 0x007fffff
262 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
263 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
264 #define FILE_VALID_SET_FLAGS 0x00001036
265
266 /*
267 * file information
268 */
269 #define FileDirectoryInformation 1
270 #define FileFullDirectoryInformation 2
271 #define FileBothDirectoryInformation 3
272 #define FileBasicInformation 4
273 #define FileStandardInformation 5
274 #define FileInternalInformation 6
275 #define FileEaInformation 7
276 #define FileAccessInformation 8
277 #define FileNameInformation 9
278 #define FileRenameInformation 10
279 #define FileLinkInformation 11
280 #define FileNamesInformation 12
281 #define FileDispositionInformation 13
282 #define FilePositionInformation 14
283 #define FileFullEaInformation 15
284 #define FileModeInformation 16
285 #define FileAlignmentInformation 17
286 #define FileAllInformation 18
287 #define FileAllocationInformation 19
288 #define FileEndOfFileInformation 20
289 #define FileAlternateNameInformation 21
290 #define FileStreamInformation 22
291 #define FilePipeInformation 23
292 #define FilePipeLocalInformation 24
293 #define FilePipeRemoteInformation 25
294 #define FileMailslotQueryInformation 26
295 #define FileMailslotSetInformation 27
296 #define FileCompressionInformation 28
297 #define FileCopyOnWriteInformation 29
298 #define FileCompletionInformation 30
299 #define FileMoveClusterInformation 31
300 #define FileOleClassIdInformation 32
301 #define FileOleStateBitsInformation 33
302 #define FileNetworkOpenInformation 34
303 #define FileObjectIdInformation 35
304 #define FileOleAllInformation 36
305 #define FileOleDirectoryInformation 37
306 #define FileContentIndexInformation 38
307 #define FileInheritContentIndexInformation 39
308 #define FileOleInformation 40
309 #define FileMaximumInformation 41
310
311
312
313 typedef ULONG FS_INFORMATION_CLASS;
314
315 /*
316 * file system information class values
317 */
318 #define FileFsVolumeInformation 1
319 #define FileFsLabelInformation 2
320 #define FileFsSizeInformation 3
321 #define FileFsDeviceInformation 4
322 #define FileFsAttributeInformation 5
323 #define FileFsControlInformation 6
324 #define FileFsQuotaQueryInformation 7
325 #define FileFsQuotaSetInformation 8
326 #define FileFsMaximumInformation 9
327
328 #define IRP_MN_QUERY_DIRECTORY 0x01
329 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
330
331 #endif