branch update for HEAD-2003050101
[reactos.git] / include / ntos / rtltypes.h
1 /* $Id$
2  * 
3  */
4
5 #ifndef __DDK_RTLTYPES_H
6 #define __DDK_RTLTYPES_H
7
8 #ifndef __USE_W32API
9
10 #define COMPRESSION_FORMAT_NONE         0x0000
11 #define COMPRESSION_FORMAT_DEFAULT      0x0001
12 #define COMPRESSION_FORMAT_LZNT1        0x0002
13
14 #define COMPRESSION_ENGINE_STANDARD     0x0000
15 #define COMPRESSION_ENGINE_MAXIMUM      0x0100
16 #define COMPRESSION_ENGINE_HIBER        0x0200
17
18 typedef struct _CONTROLLER_OBJECT
19 {
20   CSHORT Type;
21   CSHORT Size;
22   PVOID ControllerExtension;
23   KDEVICE_QUEUE DeviceWaitQueue;
24   ULONG Spare1;
25   LARGE_INTEGER Spare2;
26 } CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
27
28 typedef struct _STRING
29 {
30   /*
31    * Length in bytes of the string stored in buffer
32    */
33   USHORT Length;
34
35   /*
36    * Maximum length of the string 
37    */
38   USHORT MaximumLength;
39
40   /*
41    * String
42    */
43   PCHAR Buffer;
44 } STRING, *PSTRING;
45
46 typedef STRING ANSI_STRING;
47 typedef PSTRING PANSI_STRING;
48
49 typedef STRING OEM_STRING;
50 typedef PSTRING POEM_STRING;
51
52 typedef struct _TIME_FIELDS
53 {
54   CSHORT Year;
55   CSHORT Month;
56   CSHORT Day;
57   CSHORT Hour;
58   CSHORT Minute;
59   CSHORT Second;
60   CSHORT Milliseconds;
61   CSHORT Weekday;
62 } TIME_FIELDS, *PTIME_FIELDS;
63
64 typedef struct _RTL_BITMAP
65 {
66   ULONG  SizeOfBitMap;
67   PULONG Buffer;
68 } RTL_BITMAP, *PRTL_BITMAP;
69
70
71 #ifdef __GNUC__
72 #define STDCALL_FUNC STDCALL
73 #else
74 #define STDCALL_FUNC(a) (__stdcall a )
75 #endif /*__GNUC__*/
76
77
78 typedef NTSTATUS STDCALL_FUNC
79 (*PRTL_QUERY_REGISTRY_ROUTINE) (PWSTR ValueName,
80                                ULONG ValueType,
81                                PVOID ValueData,
82                                ULONG ValueLength,
83                                PVOID Context,
84                                PVOID EntryContext);
85
86 typedef struct _RTL_QUERY_REGISTRY_TABLE
87 {
88   PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
89   ULONG Flags;
90   PWSTR Name;
91   PVOID EntryContext;
92   ULONG DefaultType;
93   PVOID DefaultData;
94   ULONG DefaultLength;
95 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
96
97 typedef struct _COMPRESSED_DATA_INFO
98 {
99   USHORT CompressionFormatAndEngine;
100   UCHAR CompressionUnitShift;
101   UCHAR ChunkShift;
102   UCHAR ClusterShift;
103   UCHAR Reserved;
104   USHORT NumberOfChunks;
105   ULONG CompressedChunkSizes[1];
106 } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
107
108 typedef struct _GENERATE_NAME_CONTEXT
109 {
110   USHORT Checksum;
111   BOOLEAN CheckSumInserted;
112   UCHAR NameLength;
113   WCHAR NameBuffer[8];
114   ULONG ExtensionLength;
115   WCHAR ExtensionBuffer[4];
116   ULONG LastIndexValue;
117 } GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
118
119 typedef struct _RTL_SPLAY_LINKS
120 {
121   struct _RTL_SPLAY_LINKS *Parent;
122   struct _RTL_SPLAY_LINKS *LeftChild;
123   struct _RTL_SPLAY_LINKS *RightChild;
124 } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
125
126 #else /* __USE_W32API */
127
128 #include <ddk/ntifs.h>
129
130 #endif /* __USE_W32API */
131
132 typedef struct _USER_STACK
133 {
134  PVOID FixedStackBase;
135  PVOID FixedStackLimit;
136  PVOID ExpandableStackBase;
137  PVOID ExpandableStackLimit;
138  PVOID ExpandableStackBottom;
139 } USER_STACK, *PUSER_STACK;
140
141 typedef struct _RTL_HEAP_DEFINITION
142 {
143   ULONG Length;
144   ULONG Unknown[11];
145 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
146
147 typedef struct _RTL_ATOM_TABLE
148 {
149   ULONG TableSize;
150   ULONG NumberOfAtoms;
151   PVOID Lock;           /* fast mutex (kernel mode)/ critical section (user mode) */
152   PVOID HandleTable;
153   LIST_ENTRY Slot[0];
154 } RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
155
156 typedef struct _LB_RANGE
157 {
158   UCHAR upper;
159   UCHAR lower;
160 } LB_RANGE;
161
162 typedef struct _RTL_NLS_DATA
163 {
164   USHORT   CodePage;
165   USHORT   MaxCharacterSize;  // SBCS = 1, DBCS = 2
166   WCHAR    DefaultCharacter;
167   WCHAR    char1;
168   WCHAR    char2;
169   WCHAR    char3;
170   USHORT   DbcsFlag;
171   LB_RANGE LeadByteRange[6];
172   USHORT   reserved;
173   PWCHAR   MultiByteToUnicode;
174   PCHAR    UnicodeToMultiByte;
175   PWCHAR   DosMultiByteToUnicode;
176   PCHAR    DbcsTags;
177 } RTL_NLS_DATA, *PRTL_NLS_DATA;
178
179 typedef struct _RTL_NLS_TABLE
180 {
181   RTL_NLS_DATA OemInfo;
182   RTL_NLS_DATA AnsiInfo;
183   PWCHAR UpcaseTable;
184   PWCHAR DowncaseTable;
185 } RTL_NLS_TABLE, *PRTL_NLS_TABLE;
186
187 struct _RTL_GENERIC_TABLE;
188
189 typedef enum _RTL_GENERIC_COMPARE_RESULTS
190 {
191   GenericLessThan,
192   GenericGreaterThan,
193   GenericEqual
194 } RTL_GENERIC_COMPARE_RESULTS;
195
196 typedef enum _TABLE_SEARCH_RESULT
197 {
198   TableEmptyTree,
199   TableFoundNode,
200   TableInsertAsLeft,
201   TableInsertAsRight
202 } TABLE_SEARCH_RESULT;
203
204 typedef RTL_GENERIC_COMPARE_RESULTS NTAPI
205 (*PRTL_GENERIC_COMPARE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
206                                 PVOID FirstStruct,
207                                 PVOID SecondStruct);
208
209 typedef PVOID NTAPI
210 (*PRTL_GENERIC_ALLOCATE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
211                                  ULONG ByteSize
212                                  );
213
214 typedef VOID NTAPI
215 (*PRTL_GENERIC_FREE_ROUTINE)(struct _RTL_GENERIC_TABLE *GenericTable,
216                              PVOID Element
217                              );
218
219 typedef struct _RTL_GENERIC_TABLE
220 {
221   PVOID RootElement;
222   ULONG Unknown2;
223   ULONG Unknown3;
224   ULONG Unknown4;
225   ULONG Unknown5;
226   ULONG ElementCount;
227   PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
228   PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
229   PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
230   ULONG UserParameter;
231 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
232
233
234 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
235 {
236   USHORT Length;
237   USHORT Flags;
238   UCHAR Text[1];
239 } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
240
241 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
242 {
243   ULONG LowId;
244   ULONG HighId;
245   ULONG OffsetToEntries;
246 } RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
247
248 typedef struct _RTL_MESSAGE_RESOURCE_DATA
249 {
250   ULONG NumberOfBlocks;
251   RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
252 } RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
253
254 typedef VOID STDCALL
255 (*PRTL_BASE_PROCESS_START_ROUTINE)(PTHREAD_START_ROUTINE StartAddress,
256   PVOID Parameter);
257
258 #endif /* __DDK_RTLTYPES_H */