1 /* GENERAL DEFINITIONS ****************************************************/
3 #include <internal/hal/irq.h>
8 * PURPOSE: Number of a thread priority levels
10 #define NR_PRIORITY_LEVELS (32)
13 * PURPOSE: Type of queue to insert a work item in
19 HyperCriticalWorkQueue
,
23 * Types of memory to allocate
28 NonPagedPoolMustSucceed
,
29 NonPagedPoolCacheAligned
,
30 NonPagedPoolCacheAlignedMustS
,
32 PagedPoolCacheAligned
,
41 * Read any data from the actual backing media
46 * The I/O operation is performing paging
51 * The IRP is for a mount operation
56 * The API expects synchronous behaviour
61 * The IRP is associated with a larger operation
66 * The AssociatedIrp.SystemBuffer field is valid
71 * The system buffer was allocated from pool and should be deallocated
74 IRP_DEALLOCATE_BUFFER
,
77 * The IRP is for an input operation
82 * The paging operation should complete synchronously
84 IRP_SYNCHRONOUS_PAGING_IO
,
87 * The IRP represents a filesystem create operation
92 * The IRP represents a filesystem read operation
97 * The IRP represents a filesystem write operation
102 * The IRP represents a filesystem close operation
107 * Asynchronous behavior is advised but not required
109 IRP_DEFER_IO_COMPLETION
,
113 * I/O operation flags
118 * Force an access check even if opened in kernel mode
120 SL_FORCE_ACCESS_CHECK
,
123 * The file being opened is a paging file
127 SL_OPEN_TARGET_DIRECTORY
,
133 SL_OVERRIDE_VERIFY_VOLUME
,
137 SL_FT_SEQUENTIAL_WRITE
,
145 SL_RETURN_SINGLE_ENTRY
,
155 * Possible flags for the device object flags
159 DO_BUFFERED_IO
= 0x1,
164 * Possible status codes
165 * FIXME: These may not be the actual values used by NT
170 STATUS_INSUFFICIENT_RESOURCES
,
171 STATUS_OBJECT_NAME_EXISTS
,
172 STATUS_OBJECT_NAME_COLLISION
,
173 // STATUS_DATATYPE_MISALIGNMENT,
174 STATUS_CTL_FILE_NOT_SUPPORTED
,
175 // STATUS_ACCESS_VIOLATION,
176 STATUS_PORT_ALREADY_SET
,
177 STATUS_SECTION_NOT_IMAGE
,
178 STATUS_BAD_WORKING_SET_LIMIT
,
179 STATUS_INCOMPATIBLE_FILE_MAP
,
180 STATUS_HANDLE_NOT_WAITABLE
,
181 STATUS_PORT_DISCONNECTED
,
183 STATUS_NOT_MAPPED_VIEW
,
184 STATUS_UNABLE_TO_FREE_VM
,
185 STATUS_UNABLE_TO_DELETE_SECTION
,
186 STATUS_MORE_PROCESSING_REQUIRED
,
188 STATUS_BAD_INITIAL_STACK
,
189 STATUS_INVALID_VOLUME_LABEL
,
190 STATUS_SECTION_NOT_EXTENDED
,
191 STATUS_NOT_MAPPED_DATA
,
192 STATUS_INFO_LENGTH_MISMATCH
,
193 STATUS_INVALID_INFO_CLASS
,
194 STATUS_SUSPEND_COUNT_EXCEEDED
,
195 STATUS_NOTIFY_ENUM_DIR
,
196 STATUS_REGISTRY_RECOVERED
,
197 STATUS_REGISTRY_IO_FAILED
,
200 STATUS_KEY_HAS_CHILDREN
,
201 STATUS_CHILD_MUST_BE_VOLATILE
,
202 STATUS_REGISTRY_CORRUPT
,
203 STATUS_DLL_NOT_FOUND
,
204 STATUS_DLL_INIT_FAILED
,
205 STATUS_ORDINAL_NOT_FOUND
,
206 STATUS_ENTRYPOINT_NOT_FOUND
,
209 // STATUS_INTEGER_OVERFLOW,
210 STATUS_BUFFER_OVERFLOW
,
211 STATUS_NO_MORE_FILES
,
212 STATUS_NO_INHERITANCE
,
214 STATUS_NO_MORE_ENTRIES
,
215 STATUS_GUIDS_EXHAUSTED
,
216 STATUS_AGENTS_EXHAUSTED
,
218 STATUS_NOT_IMPLEMENTED
,
219 STATUS_ILLEGAL_FUNCTION
,
220 // STATUS_IN_PAGE_ERROR,
221 STATUS_PAGEFILE_QUOTA
,
222 STATUS_COMMITMENT_LIMIT
,
223 STATUS_SECTION_TOO_BIG
,
224 RPC_NT_SS_IN_NULL_CONTEXT
,
225 RPC_NT_INVALID_BINDING
,
226 // STATUS_INVALID_HANDLE,
227 STATUS_OBJECT_FILE_MISMATCH
,
229 STATUS_INVALID_PORT_HANDLE
,
230 STATUS_NOT_COMMITTED
,
231 STATUS_INVALID_PARAMETER
,
232 STATUS_INVALID_PARAMETER_1
,
233 STATUS_INVALID_PARAMETER_2
,
234 STATUS_INVALID_PARAMETER_3
,
235 STATUS_INVALID_PARAMETER_4
,
236 STATUS_INVALID_PARAMETER_5
,
237 STATUS_INVALID_PARAMETER_6
,
238 STATUS_INVALID_PARAMETER_7
,
239 STATUS_INVALID_PARAMETER_8
,
240 STATUS_INVALID_PARAMETER_9
,
241 STATUS_INVALID_PARAMETER_10
,
242 STATUS_INVALID_PARAMETER_11
,
243 STATUS_INVALID_PARAMETER_12
,
244 STATUS_INVALID_PARAMETER_MAX
,
245 STATUS_INVALID_PAGE_PROTECTION
,
246 STATUS_RESOURCE_DATA_NOT_FOUND
,
247 STATUS_RESOURCE_TYPE_NOT_FOUND
,
248 STATUS_RESOURCE_NAME_NOT_FOUND
,
249 STATUS_RESOURCE_LANG_NOT_FOUND
,
250 STATUS_NO_SUCH_DEVICE
,
252 STATUS_INVALID_DEVICE_REQUEST
,
254 STATUS_FILE_FORCED_CLOSED
,
257 STATUS_NO_MEDIA_IN_DEVICE
,
258 STATUS_NONEXISTENT_SECTOR
,
259 STATUS_WORKING_SET_QUOTA
,
261 STATUS_CONFLICTING_ADDRESS
,
262 STATUS_INVALID_SYSTEM_SERVICE
,
263 STATUS_THREAD_IS_TERMINATING
,
264 STATUS_PROCESS_IS_TERMINATING
,
265 STATUS_INVALID_LOCK_SEQUENCE
,
266 STATUS_INVALID_VIEW_SIZE
,
267 STATUS_ALREADY_COMMITTED
,
268 STATUS_ACCESS_DENIED
,
269 STATUS_FILE_IS_A_DIRECTORY
,
270 STATUS_CANNOT_DELETE
,
271 STATUS_INVALID_COMPUTER_NAME
,
273 STATUS_DELETE_PENDING
,
274 STATUS_PORT_CONNECTION_REFUSED
,
275 STATUS_NO_SUCH_PRIVILEGE
,
276 STATUS_PRIVILEGE_NOT_HELD
,
277 STATUS_CANNOT_IMPERSONATE
,
278 STATUS_LOGON_FAILURE
,
279 STATUS_ACCOUNT_RESTRICTION
,
280 STATUS_INVALID_LOGON_HOURS
,
281 STATUS_INVALID_WORKSTATION
,
282 STATUS_BUFFER_TOO_SMALL
,
283 STATUS_UNABLE_TO_DECOMMIT_VM
,
284 STATUS_DISK_CORRUPT_ERROR
,
285 STATUS_OBJECT_NAME_INVALID
,
286 STATUS_OBJECT_NAME_NOT_FOUND
,
287 // STATUS_OBJECT_NAME_COLLISION,
288 STATUS_OBJECT_PATH_INVALID
,
289 STATUS_OBJECT_PATH_NOT_FOUND
,
290 STATUS_DFS_EXIT_PATH_FOUND
,
291 STATUS_OBJECT_PATH_SYNTAX_BAD
,
293 STATUS_DATA_LATE_ERROR
,
296 STATUS_SHARING_VIOLATION
,
297 STATUS_QUOTA_EXCEEDED
,
298 STATUS_MUTANT_NOT_OWNED
,
299 STATUS_SEMAPHORE_LIMIT_EXCEEDED
,
301 STATUS_LOCK_NOT_GRANTED
,
305 * Possible device types
310 * Standard define types
314 FILE_DEVICE_CONTROLLER
,
316 FILE_DEVICE_INPORT_PORT
,
317 FILE_DEVICE_KEYBOARD
,
319 FILE_DEVICE_MIDI_OUT
,
322 FILE_DEVICE_PARALLEL_PORT
,
325 FILE_DEVICE_SERIAL_MOUSE_PORT
,
326 FILE_DEVICE_SERIAL_PORT
,
331 FILE_DEVICE_VIRTUAL_DISK
,
333 FILE_DEVICE_WAVE_OUT
,
334 FILE_DEVICE_8042_PORT
,
337 * Values beyond this are reserved for ISVs
339 FILE_DEVICE_FIRST_FREE
= 32768
345 * Possible device characteristics
349 FILE_REMOVABLE_MEDIA
= 0x1,
350 FILE_READ_ONLY_DEVICE
= 0x2,
351 FILE_FLOPPY_DISKETTE
= 0x4,
352 FILE_WRITE_ONCE_MEDIA
= 0x8,
353 FILE_REMOTE_DEVICE
= 0x10,
366 MaximumInterfaceType
,
370 * This is a list of bug check types (not MS's)
376 KBUG_IO_STACK_OVERFLOW
,
378 KBUG_POOL_FREE_LIST_CORRUPT
,
381 * These are well known but the actual value is unknown
386 * These are well known (MS) bug types
387 * (Reference: NT Insider 1997 - http://www.osr.com)
389 IRQL_NOT_LESS_OR_EQUAL
= 0xa,
390 KMODE_EXCEPTION_NOT_HANDLED
= 0x1e,
391 UNEXPECTED_KERNEL_MODE_TRAP
= 0x7f,
392 PAGE_FAULT_IN_NON_PAGED_AREA
= 0x50,
396 * PURPOSE: Object attributes
403 OBJ_CASE_INSENSITIVE
= 0x8,
408 * PURPOSE: DPC priorities
418 * PURPOSE: Timer types
423 SynchronizationTimer
,
427 * PURPOSE: Some drivers use these
434 * PURPOSE: Power IRP minor function numbers
441 IRP_MN_QUERY_CAPABILITIES
,
442 IRP_MN_POWER_SEQUENCE
,
446 * FIXME: These are not in the correct order
451 IRP_MJ_CREATE_NAMED_PIPE
,
455 IRP_MJ_QUERY_INFORMATION
,
456 IRP_MJ_SET_INFORMATION
,
459 IRP_MJ_FLUSH_BUFFERS
,
460 IRP_MJ_QUERY_VOLUME_INFORMATION
,
461 IRP_MJ_SET_VOLUME_INFORMATION
,
462 IRP_MJ_DIRECTORY_CONTROL
,
463 IRP_MJ_FILE_SYSTEM_CONTROL
,
464 IRP_MJ_DEVICE_CONTROL
,
465 IRP_MJ_INTERNAL_DEVICE_CONTROL
,
469 IRP_MJ_CREATE_MAILSLOT
,
470 IRP_MJ_QUERY_SECURITY
,
474 IRP_MJ_DEVICE_CHANGE
,
478 IRP_MJ_MAXIMUM_FUNCTION
,
482 * PURPOSE: Used all over
491 * PURPOSE: Arguments to MmProbeAndLockPages
500 #define MAXIMUM_VOLUME_LABEL_LENGTH (32)
510 * Which order for these (only DISPATCH_LEVEL is important for now)
516 * Above here are device specific IRQ levels
518 FIRST_DEVICE_SPECIFIC_LEVEL
,
519 HIGH_LEVEL
= FIRST_DEVICE_SPECIFIC_LEVEL
+ NR_DEVICE_SPECIFIC_LEVELS
,