ea718adb0b399b4b2baceb7e9e18a4c7e935ad04
[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
135 typedef struct _RTL_GENERIC_TABLE
136 {
137   PVOID RootElement;
138   ULONG Unknown2;
139   ULONG Unknown3;
140   ULONG Unknown4;
141   ULONG Unknown5;
142   ULONG ElementCount;
143   PVOID CompareRoutine;
144   PVOID AllocateRoutine;
145   PVOID FreeRoutine;
146   ULONG UserParameter;
147 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
148
149
150 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
151 {
152   USHORT Length;
153   USHORT Flags;
154   UCHAR Text[1];
155 } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
156
157 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
158 {
159   ULONG LowId;
160   ULONG HighId;
161   ULONG OffsetToEntries;
162 } RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
163
164 typedef struct _RTL_MESSAGE_RESOURCE_DATA
165 {
166   ULONG NumberOfBlocks;
167   RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
168 } RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
169
170
171 typedef NTSTATUS STDCALL
172 (*PRTL_QUERY_REGISTRY_ROUTINE)(PWSTR ValueName,
173                                ULONG ValueType,
174                                PVOID ValueData,
175                                ULONG ValueLength,
176                                PVOID Context,
177                                PVOID EntryContext);
178
179 typedef struct _RTL_QUERY_REGISTRY_TABLE
180 {
181   PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
182   ULONG Flags;
183   PWSTR Name;
184   PVOID EntryContext;
185   ULONG DefaultType;
186   PVOID DefaultData;
187   ULONG DefaultLength;
188 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
189
190
191 typedef struct _GENERATE_NAME_CONTEXT
192 {
193   USHORT Checksum;
194   BOOLEAN CheckSumInserted;
195   UCHAR NameLength;
196   WCHAR NameBuffer[8];
197   ULONG ExtensionLength;
198   WCHAR ExtensionBuffer[4];
199   ULONG LastIndexValue;
200 } GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
201
202
203 typedef struct _COMPRESSED_DATA_INFO
204 {
205   USHORT CompressionFormatAndEngine;
206   UCHAR CompressionUnitShift;
207   UCHAR ChunkShift;
208   UCHAR ClusterShift;
209   UCHAR Reserved;
210   USHORT NumberOfChunks;
211   ULONG CompressedChunkSizes[1];
212 } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
213
214 #endif /* __DDK_RTLTYPES_H */