1 #ifndef __INCLUDE_DDK_IODEF_H
2 #define __INCLUDE_DDK_IODEF_H
4 typedef enum _IO_QUERY_DEVICE_DESCRIPTION
6 IoQueryDeviceIdentifier
= 0,
7 IoQueryDeviceConfigurationData
,
8 IoQueryDeviceComponentInformation
,
9 IoQueryDeviceDataFormatMaximum
,
10 } IO_QUERY_DEVICE_DESCRIPTION
, *PIO_QUERY_DEVICE_DESCRIPTION
;
12 typedef enum _CONFIGURATION_TYPE
17 } CONFIGURATION_TYPE
, *PCONFIGURATION_TYPE
;
19 typedef enum _CM_RESOURCE_TYPE
21 CmResourceTypePort
= 1,
22 CmResourceTypeInterrupt
,
25 CmResourceTypeDeviceSpecific
,
26 CmResourceTypeMaximum
,
29 typedef enum _CM_SHARE_DISPOSITION
31 CmResourceShareDeviceExclusive
= 1,
32 CmResourceShareDriverExclusive
,
33 CmResourceShareShared
,
34 CmResourceShareMaximum
,
35 } CM_SHARE_DISPOSITION
;
39 CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
,
40 CM_RESOURCE_INTERRUPT_LATCHED
,
45 CM_RESOURCE_PORT_MEMORY
,
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,
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,
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
98 * Possible flags for the device object flags
102 DO_BUFFERED_IO
= 0x1,
107 * Possible device types
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
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
173 MaximumInterfaceType
,
177 * FIXME: These are not in the correct order
182 IRP_MJ_CREATE_NAMED_PIPE
,
186 IRP_MJ_QUERY_INFORMATION
,
187 IRP_MJ_SET_INFORMATION
,
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
,
200 IRP_MJ_CREATE_MAILSLOT
,
201 IRP_MJ_QUERY_SECURITY
,
205 IRP_MJ_DEVICE_CHANGE
,
209 IRP_MJ_MAXIMUM_FUNCTION
,
213 * Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
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
220 #define IO_DISK_INCREMENT 4
222 #define FILE_WORD_ALIGNMENT 0x0001
225 * File disposition values
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
235 * file creation flags
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
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
247 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
248 #define FILE_NO_EA_KNOWLEDGE 0x00000200
250 #define FILE_RANDOM_ACCESS 0x00000800
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
257 #define FILE_RESERVE_OPFILTER 0x00100000
258 #define FILE_TRANSACTED_MODE 0x00200000
259 #define FILE_OPEN_OFFLINE_FILE 0x00400000
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
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
313 typedef ULONG FS_INFORMATION_CLASS
;
316 * file system information class values
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
328 #define IRP_MN_QUERY_DIRECTORY 0x01
329 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02