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,
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)
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)
80 #define SL_FAIL_IMMEDIATELY (0x1)
81 #define SL_EXCLUSIVE_LOCK (0x2)
83 #define SL_WATCH_TREE (0x1)
85 #define SL_RESTART_SCAN (0x1)
86 #define SL_RETURN_SINGLE_ENTRY (0x2)
87 #define SL_INDEX_SPECIFIED (0x4)
89 #define SL_ALLOW_RAW_MOUNT (0x1)
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
97 * Possible flags for the device object flags
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
113 * Possible device types
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
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
172 typedef enum _INTERFACE_TYPE
174 InterfaceTypeUndefined
= -1,
191 } INTERFACE_TYPE
, *PINTERFACE_TYPE
;
197 IRP_MJ_CREATE_NAMED_PIPE
,
201 IRP_MJ_QUERY_INFORMATION
,
202 IRP_MJ_SET_INFORMATION
,
205 IRP_MJ_FLUSH_BUFFERS
,
206 IRP_MJ_QUERY_VOLUME_INFORMATION
,
207 IRP_MJ_SET_VOLUME_INFORMATION
,
208 IRP_MJ_DIRECTORY_CONTROL
,
209 IRP_MJ_FILE_SYSTEM_CONTROL
,
210 IRP_MJ_DEVICE_CONTROL
,
211 IRP_MJ_INTERNAL_DEVICE_CONTROL
,
215 IRP_MJ_CREATE_MAILSLOT
,
216 IRP_MJ_QUERY_SECURITY
,
219 IRP_MJ_SYSTEM_CONTROL
,
220 IRP_MJ_DEVICE_CHANGE
,
224 IRP_MJ_MAXIMUM_FUNCTION
,
228 * Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
230 #define IRP_MN_USER_FS_REQUEST 0x00
231 #define IRP_MN_MOUNT_VOLUME 0x01
232 #define IRP_MN_VERIFY_VOLUME 0x02
233 #define IRP_MN_LOAD_FILE_SYSTEM 0x03
236 * Minor function codes for IRP_MJ_POWER
238 #define IRP_MN_WAIT_WAKE 0x00
239 #define IRP_MN_POWER_SEQUENCE 0x01
240 #define IRP_MN_SET_POWER 0x02
241 #define IRP_MN_QUERY_POWER 0x03
244 * Minor function codes for IRP_MJ_PNP
246 #define IRP_MN_START_DEVICE 0x00
247 #define IRP_MN_QUERY_REMOVE_DEVICE 0x01
248 #define IRP_MN_REMOVE_DEVICE 0x02
249 #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
250 #define IRP_MN_STOP_DEVICE 0x04
251 #define IRP_MN_QUERY_STOP_DEVICE 0x05
252 #define IRP_MN_CANCEL_STOP_DEVICE 0x06
253 #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
254 #define IRP_MN_QUERY_INTERFACE 0x08
255 #define IRP_MN_QUERY_CAPABILITIES 0x09
256 #define IRP_MN_QUERY_RESOURCES 0x0A
257 #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
258 #define IRP_MN_QUERY_DEVICE_TEXT 0x0C
259 #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
260 #define IRP_MN_READ_CONFIG 0x0F
261 #define IRP_MN_WRITE_CONFIG 0x10
262 #define IRP_MN_EJECT 0x11
263 #define IRP_MN_SET_LOCK 0x12
264 #define IRP_MN_QUERY_ID 0x13
265 #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
266 #define IRP_MN_QUERY_BUS_INFORMATION 0x15
267 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
268 #define IRP_MN_SURPRISE_REMOVAL 0x17
269 #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
273 * Priority increments
275 #define EVENT_INCREMENT 1
276 #define IO_NO_INCREMENT 0
277 #define IO_CD_ROM_INCREMENT 1
278 #define IO_DISK_INCREMENT 4
279 #define IO_KEYBOARD_INCREMENT 6
280 #define IO_MAILSLOT_INCREMENT 2
281 #define IO_MOUSE_INCREMENT 6
282 #define IO_NAMED_PIPE_INCREMENT 2
283 #define IO_NETWORK_INCREMENT 2
284 #define IO_PARALLEL_INCREMENT 1
285 #define IO_SERIAL_INCREMENT 2
286 #define IO_SOUND_INCREMENT 8
287 #define IO_VIDEO_INCREMENT 1
288 #define SEMAPHORE_INCREMENT 1
290 #define FILE_BYTE_ALIGNMENT 0x00000000
291 #define FILE_WORD_ALIGNMENT 0x00000001
292 #define FILE_LONG_ALIGNMENT 0x00000003
293 #define FILE_QUAD_ALIGNMENT 0x00000007
294 #define FILE_OCTA_ALIGNMENT 0x0000000f
295 #define FILE_32_BYTE_ALIGNMENT 0x0000001f
296 #define FILE_64_BYTE_ALIGNMENT 0x0000003f
297 #define FILE_128_BYTE_ALIGNMENT 0x0000007f
298 #define FILE_256_BYTE_ALIGNMENT 0x000000ff
299 #define FILE_512_BYTE_ALIGNMENT 0x000001ff
302 * File disposition values
304 #define FILE_SUPERSEDED 0x0000
305 #define FILE_OPENED 0x0001
306 #define FILE_CREATED 0x0002
307 #define FILE_OVERWRITTEN 0x0003
308 #define FILE_EXISTS 0x0004
309 #define FILE_DOES_NOT_EXIST 0x0005
313 * file creation flags
315 #define FILE_DIRECTORY_FILE 0x00000001
316 #define FILE_WRITE_THROUGH 0x00000002
317 #define FILE_SEQUENTIAL_ONLY 0x00000004
318 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
320 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
321 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
322 #define FILE_NON_DIRECTORY_FILE 0x00000040
323 #define FILE_CREATE_TREE_CONNECTION 0x00000080
325 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
326 #define FILE_NO_EA_KNOWLEDGE 0x00000200
328 #define FILE_RANDOM_ACCESS 0x00000800
330 #define FILE_DELETE_ON_CLOSE 0x00001000
331 #define FILE_OPEN_BY_FILE_ID 0x00002000
332 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
333 #define FILE_NO_COMPRESSION 0x00008000
335 #define FILE_RESERVE_OPFILTER 0x00100000
336 #define FILE_TRANSACTED_MODE 0x00200000
337 #define FILE_OPEN_OFFLINE_FILE 0x00400000
339 #define FILE_VALID_OPTION_FLAGS 0x007fffff
340 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
341 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
342 #define FILE_VALID_SET_FLAGS 0x00001036
345 typedef ULONG FS_INFORMATION_CLASS
;
348 * file system information class values
350 #define FileFsVolumeInformation 1
351 #define FileFsLabelInformation 2
352 #define FileFsSizeInformation 3
353 #define FileFsDeviceInformation 4
354 #define FileFsAttributeInformation 5
355 #define FileFsControlInformation 6
356 #define FileFsQuotaQueryInformation 7
357 #define FileFsQuotaSetInformation 8
358 #define FileFsMaximumInformation 9
360 #define IRP_MN_QUERY_DIRECTORY 0x01
361 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02