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
,
55 * Read any data from the actual backing media
60 * The I/O operation is performing paging
65 * The IRP is for a mount operation
70 * The API expects synchronous behaviour
75 * The IRP is associated with a larger operation
80 * The AssociatedIrp.SystemBuffer field is valid
85 * The system buffer was allocated from pool and should be deallocated
88 IRP_DEALLOCATE_BUFFER
,
91 * The IRP is for an input operation
96 * The paging operation should complete synchronously
98 IRP_SYNCHRONOUS_PAGING_IO
,
101 * The IRP represents a filesystem create operation
103 IRP_CREATE_OPERATION
,
106 * The IRP represents a filesystem read operation
111 * The IRP represents a filesystem write operation
116 * The IRP represents a filesystem close operation
121 * Asynchronous behavior is advised but not required
123 IRP_DEFER_IO_COMPLETION
,
127 * I/O operation flags
132 * Force an access check even if opened in kernel mode
134 SL_FORCE_ACCESS_CHECK
,
137 * The file being opened is a paging file
141 SL_OPEN_TARGET_DIRECTORY
,
147 SL_OVERRIDE_VERIFY_VOLUME
,
151 SL_FT_SEQUENTIAL_WRITE
,
159 SL_RETURN_SINGLE_ENTRY
,
173 SL_INVOKE_ON_SUCCESS
= 1,
174 SL_INVOKE_ON_ERROR
= 2,
175 SL_INVOKE_ON_CANCEL
= 4,
179 * Possible flags for the device object flags
183 DO_BUFFERED_IO
= 0x1,
188 * Possible device types
193 * Standard define types
197 FILE_DEVICE_CONTROLLER
,
199 FILE_DEVICE_INPORT_PORT
,
200 FILE_DEVICE_KEYBOARD
,
202 FILE_DEVICE_MIDI_OUT
,
205 FILE_DEVICE_PARALLEL_PORT
,
208 FILE_DEVICE_SERIAL_MOUSE_PORT
,
209 FILE_DEVICE_SERIAL_PORT
,
214 FILE_DEVICE_VIRTUAL_DISK
,
216 FILE_DEVICE_WAVE_OUT
,
217 FILE_DEVICE_8042_PORT
,
218 FILE_DEVICE_FILE_SYSTEM
,
221 * Values beyond this are reserved for ISVs
223 FILE_DEVICE_FIRST_FREE
= 32768
229 * Possible device characteristics
233 FILE_REMOVABLE_MEDIA
= 0x1,
234 FILE_READ_ONLY_DEVICE
= 0x2,
235 FILE_FLOPPY_DISKETTE
= 0x4,
236 FILE_WRITE_ONCE_MEDIA
= 0x8,
237 FILE_REMOTE_DEVICE
= 0x10,
250 MaximumInterfaceType
,
254 * FIXME: These are not in the correct order
259 IRP_MJ_CREATE_NAMED_PIPE
,
263 IRP_MJ_QUERY_INFORMATION
,
264 IRP_MJ_SET_INFORMATION
,
267 IRP_MJ_FLUSH_BUFFERS
,
268 IRP_MJ_QUERY_VOLUME_INFORMATION
,
269 IRP_MJ_SET_VOLUME_INFORMATION
,
270 IRP_MJ_DIRECTORY_CONTROL
,
271 IRP_MJ_FILE_SYSTEM_CONTROL
,
272 IRP_MJ_DEVICE_CONTROL
,
273 IRP_MJ_INTERNAL_DEVICE_CONTROL
,
277 IRP_MJ_CREATE_MAILSLOT
,
278 IRP_MJ_QUERY_SECURITY
,
282 IRP_MJ_DEVICE_CHANGE
,
286 IRP_MJ_MAXIMUM_FUNCTION
,
291 * PURPOSE: Details about the result of a file open or create
302 #define IRP_MN_USER_FS_REQUEST 0x00
303 #define IRP_MN_MOUNT_VOLUME 0x01
304 #define IRP_MN_VERIFY_VOLUME 0x02
305 #define IRP_MN_LOAD_FILE_SYSTEM 0x03