update for HEAD-2002110701
[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 _INITIAL_TEB
133 {
134   ULONG StackCommit;
135   ULONG StackReserve;
136   PVOID StackBase;
137   PVOID StackLimit;
138   PVOID StackAllocate;
139 } INITIAL_TEB, *PINITIAL_TEB;
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
188 typedef struct _RTL_GENERIC_TABLE
189 {
190   PVOID RootElement;
191   ULONG Unknown2;
192   ULONG Unknown3;
193   ULONG Unknown4;
194   ULONG Unknown5;
195   ULONG ElementCount;
196   PVOID CompareRoutine;
197   PVOID AllocateRoutine;
198   PVOID FreeRoutine;
199   ULONG UserParameter;
200 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
201
202
203 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
204 {
205   USHORT Length;
206   USHORT Flags;
207   UCHAR Text[1];
208 } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
209
210 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
211 {
212   ULONG LowId;
213   ULONG HighId;
214   ULONG OffsetToEntries;
215 } RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
216
217 typedef struct _RTL_MESSAGE_RESOURCE_DATA
218 {
219   ULONG NumberOfBlocks;
220   RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
221 } RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
222
223 #endif /* __DDK_RTLTYPES_H */