branch update for HEAD-2003021201
[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 /*
46  * PURPOSE: Object attributes
47  */
48 enum
49 {
50    OBJ_INHERIT = 0x2,
51    OBJ_PERMANENT = 0x10,
52    OBJ_EXCLUSIVE = 0x20,
53    OBJ_CASE_INSENSITIVE = 0x40,
54    OBJ_OPENIF = 0x80,
55    OBJ_OPENLINK = 0x100,
56    OBJ_VALID_ATTRIBUTES = 0x1F2,
57 };
58
59 /*
60  * PURPOSE: Timer types
61  */
62 enum
63 {
64    NotificationTimer,
65    SynchronizationTimer,
66 };
67
68 /*
69  * PURPOSE: Some drivers use these
70  */
71 #ifndef IN
72 #define IN
73 #define OUT
74 #define OPTIONAL
75 #endif
76
77 /*
78  * PURPOSE: Arguments to MmProbeAndLockPages
79  */
80 enum
81 {
82    IoReadAccess,
83    IoWriteAccess,
84    IoModifyAccess,
85 };
86
87 #define MAXIMUM_VOLUME_LABEL_LENGTH (32)
88
89 #include <ddk/i386/irql.h>
90
91 #define PASSIVE_LEVEL   0               // Passive release level
92 #define LOW_LEVEL       0               // Lowest interrupt level
93 #define APC_LEVEL       1               // APC interrupt level
94 #define DISPATCH_LEVEL  2               // Dispatcher level
95 /* timer used for profiling */
96 #define PROFILE_LEVEL   27              
97 /* Interval clock 1 level - Not used on x86 */
98 #define CLOCK1_LEVEL    28              
99 #define CLOCK2_LEVEL    28              // Interval clock 2 level
100 #define IPI_LEVEL       29              // Interprocessor interrupt level 
101 #define POWER_LEVEL     30              // Power failure level
102 #define HIGH_LEVEL      31              // Highest interrupt level
103 #define SYNCH_LEVEL     (IPI_LEVEL-1)   // synchronization level
104
105 #endif /* __ASM__ */
106
107 /* Values returned by KeGetPreviousMode() */
108 #define KernelMode (0)
109 #define UserMode   (1)
110
111 #endif /* ndef _DDK_DEFINES_H */