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
16 FloatingPointProcessor
,
52 RealModeIrqRoutingTable
,
53 RealModePCIEnumeration
,
55 } CONFIGURATION_TYPE
, *PCONFIGURATION_TYPE
;
57 typedef enum _CM_RESOURCE_TYPE
59 CmResourceTypePort
= 1,
60 CmResourceTypeInterrupt
,
63 CmResourceTypeDeviceSpecific
,
64 CmResourceTypeMaximum
,
67 typedef enum _CM_SHARE_DISPOSITION
69 CmResourceShareDeviceExclusive
= 1,
70 CmResourceShareDriverExclusive
,
71 CmResourceShareShared
,
72 CmResourceShareMaximum
,
73 } CM_SHARE_DISPOSITION
;
77 CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
,
78 CM_RESOURCE_INTERRUPT_LATCHED
,
83 CM_RESOURCE_MEMORY_READ_WRITE
= 0x0000,
84 CM_RESOURCE_MEMORY_READ_ONLY
= 0x0001,
85 CM_RESOURCE_MEMORY_WRITE_ONLY
= 0x0002,
86 CM_RESOURCE_MEMORY_PREFETCHABLE
= 0x0004,
87 CM_RESOURCE_MEMORY_COMBINEDWRITE
= 0x0008,
88 CM_RESOURCE_MEMORY_24
= 0x0010
94 CM_RESOURCE_PORT_MEMORY
,
105 IRP_MOUNT_COMPLETION
= 0x2,
106 IRP_SYNCHRONOUS_API
= 0x4,
107 IRP_ASSOCIATED_IRP
= 0x8,
108 IRP_BUFFERED_IO
= 0x10,
109 IRP_DEALLOCATE_BUFFER
= 0x20,
110 IRP_INPUT_OPERATION
= 0x40,
111 IRP_SYNCHRONOUS_PAGING_IO
= 0x40,
112 IRP_CREATE_OPERATION
= 0x80,
113 IRP_READ_OPERATION
= 0x100,
114 IRP_WRITE_OPERATION
= 0x200,
115 IRP_CLOSE_OPERATION
= 0x400,
116 IRP_DEFER_IO_COMPLETION
= 0x800,
117 IRP_OB_QUERY_NAME
= 0x1000,
118 IRP_HOLD_DEVICE_QUEUE
= 0x2000,
119 IRP_RETRY_IO_COMPLETION
= 0x4000
122 #define SL_FORCE_ACCESS_CHECK (0x1)
123 #define SL_OPEN_PAGING_FILE (0x2)
124 #define SL_OPEN_TARGET_DIRECTORY (0x4)
125 #define SL_CASE_SENSITIVE (0x80)
127 #define SL_KEY_SPECIFIED (0x1)
128 #define SL_OVERRIDE_VERIFY_VOLUME (0x2)
129 #define SL_WRITE_THROUGHT (0x4)
130 #define SL_FT_SEQUENTIAL_WRITE (0x8)
132 #define SL_FAIL_IMMEDIATELY (0x1)
133 #define SL_EXCLUSIVE_LOCK (0x2)
135 #define SL_WATCH_TREE (0x1)
137 #define SL_RESTART_SCAN (0x1)
138 #define SL_RETURN_SINGLE_ENTRY (0x2)
139 #define SL_INDEX_SPECIFIED (0x4)
141 #define SL_ALLOW_RAW_MOUNT (0x1)
143 #define SL_PENDING_RETURNED 0x01
144 #define SL_INVOKE_ON_CANCEL 0x20
145 #define SL_INVOKE_ON_SUCCESS 0x40
146 #define SL_INVOKE_ON_ERROR 0x80
149 * Possible flags for the device object flags
151 #define DO_UNLOAD_PENDING 0x00000001
152 #define DO_VERIFY_VOLUME 0x00000002
153 #define DO_BUFFERED_IO 0x00000004
154 #define DO_EXCLUSIVE 0x00000008
155 #define DO_DIRECT_IO 0x00000010
156 #define DO_MAP_IO_BUFFER 0x00000020
157 #define DO_DEVICE_HAS_NAME 0x00000040
158 #define DO_DEVICE_INITIALIZING 0x00000080
159 #define DO_SYSTEM_BOOT_PARTITION 0x00000100
160 #define DO_LONG_TERM_REQUESTS 0x00000200
161 #define DO_NEVER_LAST_DEVICE 0x00000400
162 #define DO_SHUTDOWN_REGISTERED 0x00000800
163 #define DO_BUS_ENUMERATED_DEVICE 0x00001000
164 #define DO_POWER_PAGABLE 0x00002000
165 #define DO_POWER_INRUSH 0x00004000
166 #define DO_LOW_PRIORITY_FILESYSTEM 0x00010000
169 * Possible device types
171 #define FILE_DEVICE_BEEP 0x00000001
172 #define FILE_DEVICE_CD_ROM 0x00000002
173 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
174 #define FILE_DEVICE_CONTROLLER 0x00000004
175 #define FILE_DEVICE_DATALINK 0x00000005
176 #define FILE_DEVICE_DFS 0x00000006
177 #define FILE_DEVICE_DISK 0x00000007
178 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
179 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
180 #define FILE_DEVICE_INPORT_PORT 0x0000000a
181 #define FILE_DEVICE_KEYBOARD 0x0000000b
182 #define FILE_DEVICE_MAILSLOT 0x0000000c
183 #define FILE_DEVICE_MIDI_IN 0x0000000d
184 #define FILE_DEVICE_MIDI_OUT 0x0000000e
185 #define FILE_DEVICE_MOUSE 0x0000000f
186 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
187 #define FILE_DEVICE_NAMED_PIPE 0x00000011
188 #define FILE_DEVICE_NETWORK 0x00000012
189 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
190 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
191 #define FILE_DEVICE_NULL 0x00000015
192 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
193 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
194 #define FILE_DEVICE_PRINTER 0x00000018
195 #define FILE_DEVICE_SCANNER 0x00000019
196 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
197 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
198 #define FILE_DEVICE_SCREEN 0x0000001c
199 #define FILE_DEVICE_SOUND 0x0000001d
200 #define FILE_DEVICE_STREAMS 0x0000001e
201 #define FILE_DEVICE_TAPE 0x0000001f
202 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
203 #define FILE_DEVICE_TRANSPORT 0x00000021
204 #define FILE_DEVICE_UNKNOWN 0x00000022
205 #define FILE_DEVICE_VIDEO 0x00000023
206 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
207 #define FILE_DEVICE_WAVE_IN 0x00000025
208 #define FILE_DEVICE_WAVE_OUT 0x00000026
209 #define FILE_DEVICE_8042_PORT 0x00000027
210 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
211 #define FILE_DEVICE_BATTERY 0x00000029
212 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
213 #define FILE_DEVICE_MODEM 0x0000002b
214 #define FILE_DEVICE_VDM 0x0000002c
215 #define FILE_DEVICE_MASS_STORAGE 0x0000002d
216 #define FILE_DEVICE_SMB 0x0000002e
217 #define FILE_DEVICE_KS 0x0000002f
218 #define FILE_DEVICE_CHANGER 0x00000030
219 #define FILE_DEVICE_SMARTCARD 0x00000031
220 #define FILE_DEVICE_ACPI 0x00000032
221 #define FILE_DEVICE_DVD 0x00000033
222 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
223 #define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
224 #define FILE_DEVICE_DFS_VOLUME 0x00000036
225 #define FILE_DEVICE_SERENUM 0x00000037
226 #define FILE_DEVICE_TERMSRV 0x00000038
227 #define FILE_DEVICE_KSEC 0x00000039
229 #define FILE_REMOVABLE_MEDIA 0x00000001
230 #define FILE_READ_ONLY_DEVICE 0x00000002
231 #define FILE_FLOPPY_DISKETTE 0x00000004
232 #define FILE_WRITE_ONCE_MEDIA 0x00000008
233 #define FILE_REMOTE_DEVICE 0x00000010
234 #define FILE_DEVICE_IS_MOUNTED 0x00000020
235 #define FILE_VIRTUAL_VOLUME 0x00000040
236 #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
237 #define FILE_DEVICE_SECURE_OPEN 0x00000100
243 typedef enum _INTERFACE_TYPE
245 InterfaceTypeUndefined
= -1,
262 } INTERFACE_TYPE
, *PINTERFACE_TYPE
;
268 IRP_MJ_CREATE_NAMED_PIPE
,
272 IRP_MJ_QUERY_INFORMATION
,
273 IRP_MJ_SET_INFORMATION
,
276 IRP_MJ_FLUSH_BUFFERS
,
277 IRP_MJ_QUERY_VOLUME_INFORMATION
,
278 IRP_MJ_SET_VOLUME_INFORMATION
,
279 IRP_MJ_DIRECTORY_CONTROL
,
280 IRP_MJ_FILE_SYSTEM_CONTROL
,
281 IRP_MJ_DEVICE_CONTROL
,
282 IRP_MJ_INTERNAL_DEVICE_CONTROL
,
286 IRP_MJ_CREATE_MAILSLOT
,
287 IRP_MJ_QUERY_SECURITY
,
290 IRP_MJ_SYSTEM_CONTROL
,
291 IRP_MJ_DEVICE_CHANGE
,
295 IRP_MJ_MAXIMUM_FUNCTION
,
298 #define IRP_MJ_SCSI IRP_MJ_INTERNAL_DEVICE_CONTROL
301 * Minor function numbers for IRP_MJ_LOCK_CONTROL
303 #define IRP_MN_LOCK 0x01
304 #define IRP_MN_UNLOCK_SINGLE 0x02
305 #define IRP_MN_UNLOCK_ALL 0x03
306 #define IRP_MN_UNLOCK_ALL_BY_KEY 0x04
309 * Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
311 #define IRP_MN_USER_FS_REQUEST 0x00
312 #define IRP_MN_MOUNT_VOLUME 0x01
313 #define IRP_MN_VERIFY_VOLUME 0x02
314 #define IRP_MN_LOAD_FILE_SYSTEM 0x03
317 * Minor function numbers for IRP_MJ_SCSI
319 #define IRP_MN_SCSI_CLASS 0x01
322 * Minor function codes for IRP_MJ_POWER
324 #define IRP_MN_WAIT_WAKE 0x00
325 #define IRP_MN_POWER_SEQUENCE 0x01
326 #define IRP_MN_SET_POWER 0x02
327 #define IRP_MN_QUERY_POWER 0x03
330 * Minor function codes for IRP_MJ_PNP
332 #define IRP_MN_START_DEVICE 0x00
333 #define IRP_MN_QUERY_REMOVE_DEVICE 0x01
334 #define IRP_MN_REMOVE_DEVICE 0x02
335 #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
336 #define IRP_MN_STOP_DEVICE 0x04
337 #define IRP_MN_QUERY_STOP_DEVICE 0x05
338 #define IRP_MN_CANCEL_STOP_DEVICE 0x06
339 #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
340 #define IRP_MN_QUERY_INTERFACE 0x08
341 #define IRP_MN_QUERY_CAPABILITIES 0x09
342 #define IRP_MN_QUERY_RESOURCES 0x0A
343 #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
344 #define IRP_MN_QUERY_DEVICE_TEXT 0x0C
345 #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
346 #define IRP_MN_READ_CONFIG 0x0F
347 #define IRP_MN_WRITE_CONFIG 0x10
348 #define IRP_MN_EJECT 0x11
349 #define IRP_MN_SET_LOCK 0x12
350 #define IRP_MN_QUERY_ID 0x13
351 #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
352 #define IRP_MN_QUERY_BUS_INFORMATION 0x15
353 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
354 #define IRP_MN_SURPRISE_REMOVAL 0x17
355 #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
359 * Priority increments
361 #define EVENT_INCREMENT 1
362 #define IO_NO_INCREMENT 0
363 #define IO_CD_ROM_INCREMENT 1
364 #define IO_DISK_INCREMENT 4
365 #define IO_KEYBOARD_INCREMENT 6
366 #define IO_MAILSLOT_INCREMENT 2
367 #define IO_MOUSE_INCREMENT 6
368 #define IO_NAMED_PIPE_INCREMENT 2
369 #define IO_NETWORK_INCREMENT 2
370 #define IO_PARALLEL_INCREMENT 1
371 #define IO_SERIAL_INCREMENT 2
372 #define IO_SOUND_INCREMENT 8
373 #define IO_VIDEO_INCREMENT 1
374 #define MUTANT_INCREMENT 1
375 #define SEMAPHORE_INCREMENT 1
377 #define FILE_BYTE_ALIGNMENT 0x00000000
378 #define FILE_WORD_ALIGNMENT 0x00000001
379 #define FILE_LONG_ALIGNMENT 0x00000003
380 #define FILE_QUAD_ALIGNMENT 0x00000007
381 #define FILE_OCTA_ALIGNMENT 0x0000000f
382 #define FILE_32_BYTE_ALIGNMENT 0x0000001f
383 #define FILE_64_BYTE_ALIGNMENT 0x0000003f
384 #define FILE_128_BYTE_ALIGNMENT 0x0000007f
385 #define FILE_256_BYTE_ALIGNMENT 0x000000ff
386 #define FILE_512_BYTE_ALIGNMENT 0x000001ff
389 * File disposition values
391 #define FILE_SUPERSEDED 0x0000
392 #define FILE_OPENED 0x0001
393 #define FILE_CREATED 0x0002
394 #define FILE_OVERWRITTEN 0x0003
395 #define FILE_EXISTS 0x0004
396 #define FILE_DOES_NOT_EXIST 0x0005
400 * file creation flags
402 #define FILE_DIRECTORY_FILE 0x00000001
403 #define FILE_WRITE_THROUGH 0x00000002
404 #define FILE_SEQUENTIAL_ONLY 0x00000004
405 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
407 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
408 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
409 #define FILE_NON_DIRECTORY_FILE 0x00000040
410 #define FILE_CREATE_TREE_CONNECTION 0x00000080
412 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
413 #define FILE_NO_EA_KNOWLEDGE 0x00000200
414 #define FILE_OPEN_FOR_RECOVERY 0x00000400
415 #define FILE_RANDOM_ACCESS 0x00000800
417 #define FILE_DELETE_ON_CLOSE 0x00001000
418 #define FILE_OPEN_BY_FILE_ID 0x00002000
419 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
420 #define FILE_NO_COMPRESSION 0x00008000
422 #define FILE_RESERVE_OPFILTER 0x00100000
423 #define FILE_TRANSACTED_MODE 0x00200000
424 #define FILE_OPEN_OFFLINE_FILE 0x00400000
426 #define FILE_VALID_OPTION_FLAGS 0x007fffff
427 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
428 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
429 #define FILE_VALID_SET_FLAGS 0x00001036
431 #define FILE_OPEN_REPARSE_POINT 0x00200000
434 * special ByteOffset values
436 #define FILE_USE_FILE_POINTER_POSITION 0xfffffffe
438 typedef ULONG FS_INFORMATION_CLASS
, *PFS_INFORMATION_CLASS
;
441 * file system information class values
443 #define FileFsVolumeInformation 1
444 #define FileFsLabelInformation 2
445 #define FileFsSizeInformation 3
446 #define FileFsDeviceInformation 4
447 #define FileFsAttributeInformation 5
448 #define FileFsControlInformation 6
449 #define FileFsQuotaQueryInformation 7
450 #define FileFsQuotaSetInformation 8
451 #define FileFsMaximumInformation 9
453 #define IRP_MN_QUERY_DIRECTORY 0x01
454 #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
457 * Floppy device data type
459 typedef struct _CM_FLOPPY_DEVICE_DATA
466 UCHAR StepRateHeadUnloadTime
;
469 UCHAR SectorLengthCode
;
470 UCHAR SectorPerTrack
;
471 UCHAR ReadWriteGapLength
;
472 UCHAR DataTransferLength
;
473 UCHAR FormatGapLength
;
474 UCHAR FormatFillCharacter
;
475 UCHAR HeadSettleTime
;
476 UCHAR MotorSettleTime
;
477 UCHAR MaximumTrackValue
;
478 UCHAR DataTransferRate
;
479 } CM_FLOPPY_DEVICE_DATA
, *PCM_FLOPPY_DEVICE_DATA
;