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