e1aef366ed145b5f671b933e1f5ecac746c41470
[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 * This is a list of bug check types (not MS's)
38 */
39 enum
40 {
41 APC_INDEX_MISMATCH = 1,
42 DEVICE_QUEUE_NOT_BUSY,
43 INVALID_AFFINITY_SET,
44 INVALID_DATA_ACCESS_TRAP,
45 INVALID_PROCESS_ATTACH_ATTEMPT,
46 INVALID_PROCESS_DEATTACH_ATTEMPT,
47 INVALID_SOFTWARE_INTERRUPT,
48 IRQL_NOT_DISPATCH_LEVEL,
49 IRQL_NOT_GREATER_OR_EQUAL,
50 NO_EXCEPTION_HANDLING_SUPPORT,
51 MAXIMUM_WAIT_OBJECTS_EXCEEDED,
52 MUTEX_LEVEL_NUMBER_VIOLATION,
53 NO_USER_MODE_CONTEXT,
54 SPIN_LOCK_ALREADY_OWNED,
55 SPIN_LOCK_NOT_OWNED,
56 THREAD_NOT_MUTEX_OWNER,
57 TRAP_CAUSE_UNKNOWN,
58 EMPTY_THREAD_REAPER_LIST,
59 CREATE_DELETE_LOCK_NOT_LOCKED,
60 LAST_CHANCE_CALLED_FROM_KMODE,
61 CID_HANDLE_CREATION,
62 CID_HANDLE_DELETION,
63 REFERENCE_BY_POINTER,
64 BAD_POOL_HEADER,
65 MEMORY_MANAGMENT,
66 PFN_SHARE_COUNT,
67 PFN_REFERENCE_COUNT,
68 NO_SPIN_LOCK_AVAILABLE,
69 KMODE_EXCEPTION_NOT_HANDLED,
70 SHARED_RESOURCE_CONV_ERROR,
71 KERNEL_APC_PENDING_DURING_EXIT,
72 QUOTA_UNDERFLOW,
73 FILE_SYSTEM,
74 FAT_FILE_SYSTEM,
75 NTFS_FILE_SYSTEM,
76 NPFS_FILE_SYSTEM,
77 CDFS_FILE_SYSTEM,
78 RDR_FILE_SYSTEM,
79 CORRUPT_ACCESS_TOKEN,
80 SECURITY_SYSTEM,
81 INCONSISTENT_IRP,
82 PANIC_STACK_SWITCH,
83 PORT_DRIVER_INTERNAL,
84 SCSI_DISK_DRIVER_INTERNAL,
85 INSTRUCTION_BUS_ERROR,
86 SET_OF_INVALID_CONTEXT,
87 PHASE0_INITIALIZATION_FAILED,
88 PHASE1_INITIALIZATION_FAILED,
89 UNEXPECTED_INITIALIZATION_CALL,
90 CACHE_MANAGER,
91 NO_MORE_IRP_STACK_LOCATIONS,
92 DEVICE_REFERENCE_COUNT_NOT_ZERO,
93 FLOPPY_INTERNAL_ERROR,
94 SERIAL_DRIVER_INTERNAL,
95 SYSTEM_EXIT_OWNED_MUTEX,
96 SYSTEM_UNWIND_PREVIOUS_USER,
97 SYSTEN_SERVICE_EXCEPTION,
98 INTERRUPT_UNWIND_ATTEMPTED,
99 INTERRUPT_EXCEPTION_NOT_HANDLED,
100 MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED,
101 NO_MORE_SYSTEM_PTES,
102 TARGET_MDL_TOO_SMALL,
103 MUST_SUCCEED_POOL_EMPTY,
104 ATDISK_DRIVER_INTERNAL,
105 NO_SUCH_PARTITION,
106 MULTIPLE_IRP_COMPLETE_REQUESTS,
107 INSUFFICENT_SYSTEM_MAP_PAGES,
108 DEREF_UNKNOWN_LOGON_SERVICE,
109 REF_UNKNOWN_LOGON_SERVICE,
110 CANCEL_STATE_IN_COMPLETED_IRP,
111 PAGE_FAULT_WITH_INTERRUPTS_OFF,
112 IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
113 STREAMS_INTERNAL_ERROR,
114 FATAL_UNHANDLED_HARD_ERROR,
115 NO_PAGES_AVAILABLE,
116 PFN_LIST_CORRUPT,
117 NDIS_INTERNAL_ERROR,
118 PAGE_FAULT_IN_NONPAGED_AREA,
119 REGISTRY_ERROR,
120 MAILSLOT_FILE_SYSTEM,
121 NO_BOOT_DEVICE,
122 LM_SERVER_INTERNAL_ERROR,
123 DATA_COHERENCY_EXCEPTION,
124 INSTRUCTION_COHERENCY_EXCEPTION,
125 XNS_INTERNAL_ERROR,
126 FTDISK_INTERNAL_ERROR,
127 PINBALL_FILE_SYSTEM,
128 CRITICAL_SERVICE_FAILED,
129 SET_ENV_VAR_FAILED,
130 HAL_INITIALIZED_FAILED,
131 UNSUPPORTED_PROCESSOR,
132 OBJECT_INITIALIZATION_FAILED,
133 SECURITY_INITIALIZATION_FAILED,
134 PROCESS_INITIALIZATION_FAILED,
135 HAL1_INITIALIZATION_FAILED,
136 };
137 enum
138 {
139 KBUG_NONE,
140 KBUG_ORPHANED_IRP,
141 KBUG_IO_STACK_OVERFLOW,
142 KBUG_OUT_OF_MEMORY,
143 KBUG_POOL_FREE_LIST_CORRUPT,
144
145 /*
146 * These are well known but the actual value is unknown
147 */
148 // NO_PAGES_AVAILABLE,
149
150 /*
151 * These are well known (MS) bug types
152 * (Reference: NT Insider 1997 - http://www.osr.com)
153 */
154 IRQL_NOT_LESS_OR_EQUAL = 0xa,
155 // KMODE_EXCEPTION_NOT_HANDLED = 0x1e,
156 UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,
157 PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,
158 };
159
160 /*
161 * PURPOSE: Object attributes
162 */
163 enum
164 {
165 OBJ_INHERIT = 0x1,
166 OBJ_PERMANENT = 0x2,
167 OBJ_EXCLUSIVE = 0x4,
168 OBJ_CASE_INSENSITIVE = 0x8,
169 OBJ_OPENIF = 0x10,
170 };
171
172 /*
173 * PURPOSE: DPC priorities
174 */
175 enum
176 {
177 High,
178 Medium,
179 Low,
180 };
181
182 /*
183 * PURPOSE: Timer types
184 */
185 enum
186 {
187 NotificationTimer,
188 SynchronizationTimer,
189 };
190
191 /*
192 * PURPOSE: Some drivers use these
193 */
194 #ifndef IN
195 #define IN
196 #define OUT
197 #define OPTIONAL
198 #endif
199
200 /*
201 * PURPOSE: Power IRP minor function numbers
202 */
203 enum
204 {
205 IRP_MN_QUERY_POWER,
206 IRP_MN_SET_POWER,
207 IRP_MN_WAIT_WAKE,
208 IRP_MN_QUERY_CAPABILITIES,
209 IRP_MN_POWER_SEQUENCE,
210 };
211
212
213 /* Values returned by KeGetPreviousMode() */
214 #define KernelMode (0)
215 #define UserMode (1)
216
217 /*
218 * PURPOSE: Arguments to MmProbeAndLockPages
219 */
220 enum
221 {
222 IoReadAccess,
223 IoWriteAccess,
224 IoModifyAccess,
225 };
226
227 #define MAXIMUM_VOLUME_LABEL_LENGTH (32)
228
229 /*
230 * IRQ levels
231 */
232 #define PASSIVE_LEVEL (1)
233 #define APC_LEVEL (2)
234 #define DISPATCH_LEVEL (3)
235 #define FIRST_DEVICE_SPECIFIC_LEVEL (4)
236 #define HIGH_LEVEL (FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS)