:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / ddk / defines.h
1 #ifndef _DDK_DEFINES_H
2 #define _DDK_DEFINES_H
3
4 /* GENERAL DEFINITIONS ****************************************************/
5
6 #ifndef __ASM__
7
8 #define _WIN32_WINNT 0x0400
9
10 #include <ddk/kedef.h> 
11 #include <ddk/iodef.h>
12
13 #define EXPORTED __declspec(dllexport)
14 #define IMPORTED __declspec(dllimport)
15
16 /*
17  * PURPOSE: Number of a thread priority levels
18  */
19 #define NR_PRIORITY_LEVELS (32)
20
21 /*
22  * PURPOSE: Type of queue to insert a work item in
23  */
24 enum
25 {
26   CriticalWorkQueue,
27   DelayedWorkQueue,
28   HyperCriticalWorkQueue,
29 };
30
31 /*
32  * Types of memory to allocate
33  */
34 enum
35 {
36    NonPagedPool,
37    NonPagedPoolMustSucceed,
38    NonPagedPoolCacheAligned,
39    NonPagedPoolCacheAlignedMustS,
40    PagedPool,
41    PagedPoolCacheAligned,
42 };
43    
44 /*
45  * This is a list of bug check types (not MS's)
46  */
47 enum
48 {
49    APC_INDEX_MISMATCH = 1,
50    DEVICE_QUEUE_NOT_BUSY,
51    INVALID_AFFINITY_SET,
52    INVALID_DATA_ACCESS_TRAP,
53    INVALID_PROCESS_ATTACH_ATTEMPT,
54    INVALID_PROCESS_DEATTACH_ATTEMPT,
55    INVALID_SOFTWARE_INTERRUPT,
56    IRQL_NOT_DISPATCH_LEVEL,
57    IRQL_NOT_GREATER_OR_EQUAL,
58    NO_EXCEPTION_HANDLING_SUPPORT,
59    MAXIMUM_WAIT_OBJECTS_EXCEEDED,
60    MUTEX_LEVEL_NUMBER_VIOLATION,
61    NO_USER_MODE_CONTEXT,
62    SPIN_LOCK_ALREADY_OWNED,
63    SPIN_LOCK_NOT_OWNED,
64    THREAD_NOT_MUTEX_OWNER,
65    TRAP_CAUSE_UNKNOWN,
66    EMPTY_THREAD_REAPER_LIST,
67    CREATE_DELETE_LOCK_NOT_LOCKED,
68    LAST_CHANCE_CALLED_FROM_KMODE,
69    CID_HANDLE_CREATION,
70    CID_HANDLE_DELETION,
71    REFERENCE_BY_POINTER,
72    BAD_POOL_HEADER,
73    MEMORY_MANAGMENT,
74    PFN_SHARE_COUNT,
75    PFN_REFERENCE_COUNT,
76    NO_SPIN_LOCK_AVAILABLE,
77    KMODE_EXCEPTION_NOT_HANDLED,
78    SHARED_RESOURCE_CONV_ERROR,
79    KERNEL_APC_PENDING_DURING_EXIT,
80    QUOTA_UNDERFLOW,
81    FILE_SYSTEM,
82    FAT_FILE_SYSTEM,
83    NTFS_FILE_SYSTEM,
84    NPFS_FILE_SYSTEM,
85    CDFS_FILE_SYSTEM,
86    RDR_FILE_SYSTEM,
87    CORRUPT_ACCESS_TOKEN,
88    SECURITY_SYSTEM,
89    INCONSISTENT_IRP,
90    PANIC_STACK_SWITCH,
91    PORT_DRIVER_INTERNAL,
92    SCSI_DISK_DRIVER_INTERNAL,
93    INSTRUCTION_BUS_ERROR,
94    SET_OF_INVALID_CONTEXT,
95    PHASE0_INITIALIZATION_FAILED,
96    PHASE1_INITIALIZATION_FAILED,
97    UNEXPECTED_INITIALIZATION_CALL,
98    CACHE_MANAGER,
99    NO_MORE_IRP_STACK_LOCATIONS,
100    DEVICE_REFERENCE_COUNT_NOT_ZERO,
101    FLOPPY_INTERNAL_ERROR,
102    SERIAL_DRIVER_INTERNAL,
103    SYSTEM_EXIT_OWNED_MUTEX,
104    SYSTEM_UNWIND_PREVIOUS_USER,
105    SYSTEN_SERVICE_EXCEPTION,
106    INTERRUPT_UNWIND_ATTEMPTED,
107    INTERRUPT_EXCEPTION_NOT_HANDLED,
108    MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED,
109    NO_MORE_SYSTEM_PTES,
110    TARGET_MDL_TOO_SMALL,
111    MUST_SUCCEED_POOL_EMPTY,
112    ATDISK_DRIVER_INTERNAL,
113    NO_SUCH_PARTITION,
114    MULTIPLE_IRP_COMPLETE_REQUESTS,
115    INSUFFICENT_SYSTEM_MAP_PAGES,
116    DEREF_UNKNOWN_LOGON_SERVICE,
117    REF_UNKNOWN_LOGON_SERVICE,
118    CANCEL_STATE_IN_COMPLETED_IRP,
119    PAGE_FAULT_WITH_INTERRUPTS_OFF,
120    IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
121    STREAMS_INTERNAL_ERROR,
122    FATAL_UNHANDLED_HARD_ERROR,
123    NO_PAGES_AVAILABLE,
124    PFN_LIST_CORRUPT,
125    NDIS_INTERNAL_ERROR,
126    PAGE_FAULT_IN_NONPAGED_AREA,
127    REGISTRY_ERROR,
128    MAILSLOT_FILE_SYSTEM,
129    NO_BOOT_DEVICE,
130    LM_SERVER_INTERNAL_ERROR,
131    DATA_COHERENCY_EXCEPTION,
132    INSTRUCTION_COHERENCY_EXCEPTION,
133    XNS_INTERNAL_ERROR,
134    FTDISK_INTERNAL_ERROR,
135    PINBALL_FILE_SYSTEM,
136    CRITICAL_SERVICE_FAILED,
137    SET_ENV_VAR_FAILED,
138    HAL_INITIALIZED_FAILED,
139    UNSUPPORTED_PROCESSOR,
140    OBJECT_INITIALIZATION_FAILED,
141    SECURITY_INITIALIZATION_FAILED,
142    PROCESS_INITIALIZATION_FAILED,
143    HAL1_INITIALIZATION_FAILED,   
144 };
145 enum
146 {
147    KBUG_NONE,
148    KBUG_ORPHANED_IRP,
149    KBUG_IO_STACK_OVERFLOW,
150    KBUG_OUT_OF_MEMORY,
151    KBUG_POOL_FREE_LIST_CORRUPT,
152      
153    /*
154     * These are well known but the actual value is unknown
155     */
156 //   NO_PAGES_AVAILABLE,
157      
158    /*
159     * These are well known (MS) bug types
160     * (Reference: NT Insider 1997 - http://www.osr.com)
161     */
162    IRQL_NOT_LESS_OR_EQUAL = 0xa,
163 //   KMODE_EXCEPTION_NOT_HANDLED = 0x1e,
164    UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,
165    PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,
166 };
167
168 /*
169  * PURPOSE: Object attributes
170  */
171 enum
172 {
173    OBJ_INHERIT = 0x2,
174    OBJ_PERMANENT = 0x10,
175    OBJ_EXCLUSIVE = 0x20,
176    OBJ_CASE_INSENSITIVE = 0x40,
177    OBJ_OPENIF = 0x80,
178    OBJ_OPENLINK = 0x100,\r
179    OBJ_VALID_ATTRIBUTES = 0x1F2,\r
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: Arguments to MmProbeAndLockPages
202  */
203 enum
204 {
205    IoReadAccess,
206    IoWriteAccess,
207    IoModifyAccess,
208 };
209
210 #define MAXIMUM_VOLUME_LABEL_LENGTH (32)
211
212 #include <ddk/i386/irql.h>
213
214 #define PASSIVE_LEVEL   0               // Passive release level
215 #define LOW_LEVEL       0               // Lowest interrupt level
216 #define APC_LEVEL       1               // APC interrupt level
217 #define DISPATCH_LEVEL  2               // Dispatcher level
218 /* timer used for profiling */
219 #define PROFILE_LEVEL   27              
220 /* Interval clock 1 level - Not used on x86 */
221 #define CLOCK1_LEVEL    28              
222 #define CLOCK2_LEVEL    28              // Interval clock 2 level
223 #define IPI_LEVEL       29              // Interprocessor interrupt level 
224 #define POWER_LEVEL     30              // Power failure level
225 #define HIGH_LEVEL      31              // Highest interrupt level
226 #define SYNCH_LEVEL     (IPI_LEVEL-1)   // synchronization level
227
228 #endif /* __ASM__ */
229
230 /* Values returned by KeGetPreviousMode() */
231 #define KernelMode (0)
232 #define UserMode   (1)
233
234 #endif /* ndef _DDK_DEFINES_H */