This commit was generated by cvs2svn to compensate for changes in r10,
[reactos.git] / reactos / include / ddk / defines.h
1 /* GENERAL DEFINITIONS ****************************************************/
2
3 #include <internal/hal/irq.h>
4
5 #include <ddk/kedef.h>
6 #include <ddk/iodef.h>
7
8 /*
9 * PURPOSE: Number of a thread priority levels
10 */
11 #define NR_PRIORITY_LEVELS (32)
12
13 /*
14 * PURPOSE: Type of queue to insert a work item in
15 */
16 enum
17 {
18 CriticalWorkQueue,
19 DelayedWorkQueue,
20 HyperCriticalWorkQueue,
21 };
22
23 /*
24 * Types of memory to allocate
25 */
26 enum
27 {
28 NonPagedPool,
29 NonPagedPoolMustSucceed,
30 NonPagedPoolCacheAligned,
31 NonPagedPoolCacheAlignedMustS,
32 PagedPool,
33 PagedPoolCacheAligned,
34 };
35
36 /*
37 * Possible status codes
38 * FIXME: These may not be the actual values used by NT
39 */
40 enum
41 {
42 STATUS_SUCCESS,
43 STATUS_INSUFFICIENT_RESOURCES,
44 STATUS_OBJECT_NAME_EXISTS,
45 STATUS_OBJECT_NAME_COLLISION,
46 // STATUS_DATATYPE_MISALIGNMENT,
47 STATUS_CTL_FILE_NOT_SUPPORTED,
48 // STATUS_ACCESS_VIOLATION,
49 STATUS_PORT_ALREADY_SET,
50 STATUS_SECTION_NOT_IMAGE,
51 STATUS_BAD_WORKING_SET_LIMIT,
52 STATUS_INCOMPATIBLE_FILE_MAP,
53 STATUS_HANDLE_NOT_WAITABLE,
54 STATUS_PORT_DISCONNECTED,
55 STATUS_NOT_LOCKED,
56 STATUS_NOT_MAPPED_VIEW,
57 STATUS_UNABLE_TO_FREE_VM,
58 STATUS_UNABLE_TO_DELETE_SECTION,
59 STATUS_MORE_PROCESSING_REQUIRED,
60 STATUS_INVALID_CID,
61 STATUS_BAD_INITIAL_STACK,
62 STATUS_INVALID_VOLUME_LABEL,
63 STATUS_SECTION_NOT_EXTENDED,
64 STATUS_NOT_MAPPED_DATA,
65 STATUS_INFO_LENGTH_MISMATCH,
66 STATUS_INVALID_INFO_CLASS,
67 STATUS_SUSPEND_COUNT_EXCEEDED,
68 STATUS_NOTIFY_ENUM_DIR,
69 STATUS_REGISTRY_RECOVERED,
70 STATUS_REGISTRY_IO_FAILED,
71 STATUS_KEY_DELETED,
72 STATUS_NO_LOG_SPACE,
73 STATUS_KEY_HAS_CHILDREN,
74 STATUS_CHILD_MUST_BE_VOLATILE,
75 STATUS_REGISTRY_CORRUPT,
76 STATUS_DLL_NOT_FOUND,
77 STATUS_DLL_INIT_FAILED,
78 STATUS_ORDINAL_NOT_FOUND,
79 STATUS_ENTRYPOINT_NOT_FOUND,
80 // STATUS_PENDING,
81 STATUS_MORE_ENTRIES,
82 // STATUS_INTEGER_OVERFLOW,
83 STATUS_BUFFER_OVERFLOW,
84 STATUS_NO_MORE_FILES,
85 STATUS_NO_INHERITANCE,
86 STATUS_NO_MORE_EAS,
87 STATUS_NO_MORE_ENTRIES,
88 STATUS_GUIDS_EXHAUSTED,
89 STATUS_AGENTS_EXHAUSTED,
90 STATUS_UNSUCCESSFUL,
91 STATUS_NOT_IMPLEMENTED,
92 STATUS_ILLEGAL_FUNCTION,
93 // STATUS_IN_PAGE_ERROR,
94 STATUS_PAGEFILE_QUOTA,
95 STATUS_COMMITMENT_LIMIT,
96 STATUS_SECTION_TOO_BIG,
97 RPC_NT_SS_IN_NULL_CONTEXT,
98 RPC_NT_INVALID_BINDING,
99 // STATUS_INVALID_HANDLE,
100 STATUS_OBJECT_FILE_MISMATCH,
101 STATUS_FILE_CLOSED,
102 STATUS_INVALID_PORT_HANDLE,
103 STATUS_NOT_COMMITTED,
104 STATUS_INVALID_PARAMETER,
105 STATUS_INVALID_PARAMETER_1,
106 STATUS_INVALID_PARAMETER_2,
107 STATUS_INVALID_PARAMETER_3,
108 STATUS_INVALID_PARAMETER_4,
109 STATUS_INVALID_PARAMETER_5,
110 STATUS_INVALID_PARAMETER_6,
111 STATUS_INVALID_PARAMETER_7,
112 STATUS_INVALID_PARAMETER_8,
113 STATUS_INVALID_PARAMETER_9,
114 STATUS_INVALID_PARAMETER_10,
115 STATUS_INVALID_PARAMETER_11,
116 STATUS_INVALID_PARAMETER_12,
117 STATUS_INVALID_PARAMETER_MAX,
118 STATUS_INVALID_PAGE_PROTECTION,
119 STATUS_RESOURCE_DATA_NOT_FOUND,
120 STATUS_RESOURCE_TYPE_NOT_FOUND,
121 STATUS_RESOURCE_NAME_NOT_FOUND,
122 STATUS_RESOURCE_LANG_NOT_FOUND,
123 STATUS_NO_SUCH_DEVICE,
124 STATUS_NO_SUCH_FILE,
125 STATUS_INVALID_DEVICE_REQUEST,
126 STATUS_END_OF_FILE,
127 STATUS_FILE_FORCED_CLOSED,
128 STATUS_WRONG_VOLUME,
129 STATUS_NO_MEDIA,
130 STATUS_NO_MEDIA_IN_DEVICE,
131 STATUS_NONEXISTENT_SECTOR,
132 STATUS_WORKING_SET_QUOTA,
133 // STATUS_NO_MEMORY,
134 STATUS_CONFLICTING_ADDRESS,
135 STATUS_INVALID_SYSTEM_SERVICE,
136 STATUS_THREAD_IS_TERMINATING,
137 STATUS_PROCESS_IS_TERMINATING,
138 STATUS_INVALID_LOCK_SEQUENCE,
139 STATUS_INVALID_VIEW_SIZE,
140 STATUS_ALREADY_COMMITTED,
141 STATUS_ACCESS_DENIED,
142 STATUS_FILE_IS_A_DIRECTORY,
143 STATUS_CANNOT_DELETE,
144 STATUS_INVALID_COMPUTER_NAME,
145 STATUS_FILE_DELETED,
146 STATUS_DELETE_PENDING,
147 STATUS_PORT_CONNECTION_REFUSED,
148 STATUS_NO_SUCH_PRIVILEGE,
149 STATUS_PRIVILEGE_NOT_HELD,
150 STATUS_CANNOT_IMPERSONATE,
151 STATUS_LOGON_FAILURE,
152 STATUS_ACCOUNT_RESTRICTION,
153 STATUS_INVALID_LOGON_HOURS,
154 STATUS_INVALID_WORKSTATION,
155 STATUS_BUFFER_TOO_SMALL,
156 STATUS_UNABLE_TO_DECOMMIT_VM,
157 STATUS_DISK_CORRUPT_ERROR,
158 STATUS_OBJECT_NAME_INVALID,
159 STATUS_OBJECT_NAME_NOT_FOUND,
160 // STATUS_OBJECT_NAME_COLLISION,
161 STATUS_OBJECT_PATH_INVALID,
162 STATUS_OBJECT_PATH_NOT_FOUND,
163 STATUS_DFS_EXIT_PATH_FOUND,
164 STATUS_OBJECT_PATH_SYNTAX_BAD,
165 STATUS_DATA_OVERRUN,
166 STATUS_DATA_LATE_ERROR,
167 STATUS_DATA_ERROR,
168 STATUS_CRC_ERROR,
169 STATUS_SHARING_VIOLATION,
170 STATUS_QUOTA_EXCEEDED,
171 STATUS_MUTANT_NOT_OWNED,
172 STATUS_SEMAPHORE_LIMIT_EXCEEDED,
173 STATUS_DISK_FULL,
174 STATUS_LOCK_NOT_GRANTED,
175
176 STATUS_DEVICE_NOT_READY,
177 STATUS_IO_TIMEOUT,
178 STATUS_MEDIA_WRITE_PROTECTED,
179 STATUS_NO_MEDIA_IN_DRIVE,
180 STATUS_VERIFY_REQUIRED,
181 STATUS_UNRECOGNIZED_MEDIA,
182 // STATUS_WRONG_VOLUME,
183 };
184
185 /*
186 * This is a list of bug check types (not MS's)
187 */
188 enum
189 {
190 APC_INDEX_MISMATCH = 1,
191 DEVICE_QUEUE_NOT_BUSY,
192 INVALID_AFFINITY_SET,
193 INVALID_DATA_ACCESS_TRAP,
194 INVALID_PROCESS_ATTACH_ATTEMPT,
195 INVALID_PROCESS_DEATTACH_ATTEMPT,
196 INVALID_SOFTWARE_INTERRUPT,
197 IRQL_NOT_DISPATCH_LEVEL,
198 IRQL_NOT_GREATER_OR_EQUAL,
199 NO_EXCEPTION_HANDLING_SUPPORT,
200 MAXIMUM_WAIT_OBJECTS_EXCEEDED,
201 MUTEX_LEVEL_NUMBER_VIOLATION,
202 NO_USER_MODE_CONTEXT,
203 SPIN_LOCK_ALREADY_OWNED,
204 SPIN_LOCK_NOT_OWNED,
205 THREAD_NOT_MUTEX_OWNER,
206 TRAP_CAUSE_UNKNOWN,
207 EMPTY_THREAD_REAPER_LIST,
208 CREATE_DELETE_LOCK_NOT_LOCKED,
209 LAST_CHANCE_CALLED_FROM_KMODE,
210 CID_HANDLE_CREATION,
211 CID_HANDLE_DELETION,
212 REFERENCE_BY_POINTER,
213 BAD_POOL_HEADER,
214 MEMORY_MANAGMENT,
215 PFN_SHARE_COUNT,
216 PFN_REFERENCE_COUNT,
217 NO_SPIN_LOCK_AVAILABLE,
218 KMODE_EXCEPTION_NOT_HANDLED,
219 SHARED_RESOURCE_CONV_ERROR,
220 KERNEL_APC_PENDING_DURING_EXIT,
221 QUOTA_UNDERFLOW,
222 FILE_SYSTEM,
223 FAT_FILE_SYSTEM,
224 NTFS_FILE_SYSTEM,
225 NPFS_FILE_SYSTEM,
226 CDFS_FILE_SYSTEM,
227 RDR_FILE_SYSTEM,
228 CORRUPT_ACCESS_TOKEN,
229 SECURITY_SYSTEM,
230 INCONSISTENT_IRP,
231 PANIC_STACK_SWITCH,
232 PORT_DRIVER_INTERNAL,
233 SCSI_DISK_DRIVER_INTERNAL,
234 INSTRUCTION_BUS_ERROR,
235 SET_OF_INVALID_CONTEXT,
236 PHASE0_INITIALIZATION_FAILED,
237 PHASE1_INITIALIZATION_FAILED,
238 UNEXPECTED_INITIALIZATION_CALL,
239 CACHE_MANAGER,
240 NO_MORE_IRP_STACK_LOCATIONS,
241 DEVICE_REFERENCE_COUNT_NOT_ZERO,
242 FLOPPY_INTERNAL_ERROR,
243 SERIAL_DRIVER_INTERNAL,
244 SYSTEM_EXIT_OWNED_MUTEX,
245 SYSTEM_UNWIND_PREVIOUS_USER,
246 SYSTEN_SERVICE_EXCEPTION,
247 INTERRUPT_UNWIND_ATTEMPTED,
248 INTERRUPT_EXCEPTION_NOT_HANDLED,
249 MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED,
250 NO_MORE_SYSTEM_PTES,
251 TARGET_MDL_TOO_SMALL,
252 MUST_SUCCEED_POOL_EMPTY,
253 ATDISK_DRIVER_INTERNAL,
254 NO_SUCH_PARTITION,
255 MULTIPLE_IRP_COMPLETE_REQUESTS,
256 INSUFFICENT_SYSTEM_MAP_PAGES,
257 DEREF_UNKNOWN_LOGON_SERVICE,
258 REF_UNKNOWN_LOGON_SERVICE,
259 CANCEL_STATE_IN_COMPLETED_IRP,
260 PAGE_FAULT_WITH_INTERRUPTS_OFF,
261 IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
262 STREAMS_INTERNAL_ERROR,
263 FATAL_UNHANDLED_HARD_ERROR,
264 NO_PAGES_AVAILABLE,
265 PFN_LIST_CORRUPT,
266 NDIS_INTERNAL_ERROR,
267 PAGE_FAULT_IN_NONPAGED_AREA,
268 REGISTRY_ERROR,
269 MAILSLOT_FILE_SYSTEM,
270 NO_BOOT_DEVICE,
271 LM_SERVER_INTERNAL_ERROR,
272 DATA_COHERENCY_EXCEPTION,
273 INSTRUCTION_COHERENCY_EXCEPTION,
274 XNS_INTERNAL_ERROR,
275 FTDISK_INTERNAL_ERROR,
276 PINBALL_FILE_SYSTEM,
277 CRITICAL_SERVICE_FAILED,
278 SET_ENV_VAR_FAILED,
279 HAL_INITIALIZED_FAILED,
280 UNSUPPORTED_PROCESSOR,
281 OBJECT_INITIALIZATION_FAILED,
282 SECURITY_INITIALIZATION_FAILED,
283 PROCESS_INITIALIZATION_FAILED,
284 HAL1_INITIALIZATION_FAILED,
285 };
286 enum
287 {
288 KBUG_NONE,
289 KBUG_ORPHANED_IRP,
290 KBUG_IO_STACK_OVERFLOW,
291 KBUG_OUT_OF_MEMORY,
292 KBUG_POOL_FREE_LIST_CORRUPT,
293
294 /*
295 * These are well known but the actual value is unknown
296 */
297 // NO_PAGES_AVAILABLE,
298
299 /*
300 * These are well known (MS) bug types
301 * (Reference: NT Insider 1997 - http://www.osr.com)
302 */
303 IRQL_NOT_LESS_OR_EQUAL = 0xa,
304 // KMODE_EXCEPTION_NOT_HANDLED = 0x1e,
305 UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,
306 PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,
307 };
308
309 /*
310 * PURPOSE: Object attributes
311 */
312 enum
313 {
314 OBJ_INHERIT = 0x1,
315 OBJ_PERMANENT = 0x2,
316 OBJ_EXCLUSIVE = 0x4,
317 OBJ_CASE_INSENSITIVE = 0x8,
318 OBJ_OPENIF = 0x10,
319 };
320
321 /*
322 * PURPOSE: DPC priorities
323 */
324 enum
325 {
326 High,
327 Medium,
328 Low,
329 };
330
331 /*
332 * PURPOSE: Timer types
333 */
334 enum
335 {
336 NotificationTimer,
337 SynchronizationTimer,
338 };
339
340 /*
341 * PURPOSE: Some drivers use these
342 */
343 #define IN
344 #define OUT
345 #define OPTIONAL
346
347 /*
348 * PURPOSE: Power IRP minor function numbers
349 */
350 enum
351 {
352 IRP_MN_QUERY_POWER,
353 IRP_MN_SET_POWER,
354 IRP_MN_WAIT_WAKE,
355 IRP_MN_QUERY_CAPABILITIES,
356 IRP_MN_POWER_SEQUENCE,
357 };
358
359 /*
360 * PURPOSE: Used all over
361 */
362 enum
363 {
364 KernelMode,
365 UserMode,
366 };
367
368 /*
369 * PURPOSE: Arguments to MmProbeAndLockPages
370 */
371 enum
372 {
373 IoReadAccess,
374 IoWriteAccess,
375 IoModifyAccess,
376 };
377
378 #define MAXIMUM_VOLUME_LABEL_LENGTH (32)
379
380 /*
381 * IRQ levels
382 */
383 enum
384 {
385 PASSIVE_LEVEL,
386
387 /*
388 * Which order for these (only DISPATCH_LEVEL is important for now)
389 */
390 APC_LEVEL,
391 DISPATCH_LEVEL,
392
393 /*
394 * Above here are device specific IRQ levels
395 */
396 FIRST_DEVICE_SPECIFIC_LEVEL,
397 HIGH_LEVEL = FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS,
398 };
399