update for HEAD-2003091401
[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 typedef struct _USER_STACK
127 {
128  PVOID FixedStackBase;
129  PVOID FixedStackLimit;
130  PVOID ExpandableStackBase;
131  PVOID ExpandableStackLimit;
132  PVOID ExpandableStackBottom;
133 } USER_STACK, *PUSER_STACK;
134
135 #else /* __USE_W32API */
136
137 #include <ddk/ntifs.h>
138
139 #endif /* __USE_W32API */
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
157 #define MAXIMUM_LEADBYTES 12
158
159 typedef struct _CPTABLEINFO
160 {
161   USHORT  CodePage;
162   USHORT  MaximumCharacterSize;  /* SBCS = 1, DBCS = 2 */
163   USHORT  DefaultChar;
164   USHORT  UniDefaultChar;
165   USHORT  TransDefaultChar;
166   USHORT  TransUniDefaultChar;
167   USHORT  DBCSCodePage;
168   UCHAR   LeadByte[MAXIMUM_LEADBYTES];
169   PUSHORT MultiByteTable;
170   PVOID   WideCharTable;
171   PUSHORT DBCSRanges;
172   PUSHORT DBCSOffsets;
173 } CPTABLEINFO, *PCPTABLEINFO;
174
175 typedef struct _NLSTABLEINFO
176 {
177   CPTABLEINFO OemTableInfo;
178   CPTABLEINFO AnsiTableInfo;
179   PUSHORT UpperCaseTable;
180   PUSHORT LowerCaseTable;
181 } NLSTABLEINFO, *PNLSTABLEINFO;
182
183 typedef struct _NLS_FILE_HEADER
184 {
185   USHORT  HeaderSize;
186   USHORT  CodePage;
187   USHORT  MaximumCharacterSize;  /* SBCS = 1, DBCS = 2 */
188   USHORT  DefaultChar;
189   USHORT  UniDefaultChar;
190   USHORT  TransDefaultChar;
191   USHORT  TransUniDefaultChar;
192   USHORT  DBCSCodePage;
193   UCHAR   LeadByte[MAXIMUM_LEADBYTES];
194 } PACKED NLS_FILE_HEADER, *PNLS_FILE_HEADER;
195
196
197 typedef struct _RTL_GENERIC_TABLE
198 {
199   PVOID RootElement;
200   ULONG Unknown2;
201   ULONG Unknown3;
202   ULONG Unknown4;
203   ULONG Unknown5;
204   ULONG ElementCount;
205   PVOID CompareRoutine;
206   PVOID AllocateRoutine;
207   PVOID FreeRoutine;
208   ULONG UserParameter;
209 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
210
211
212 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
213 {
214   USHORT Length;
215   USHORT Flags;
216   UCHAR Text[1];
217 } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
218
219 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
220 {
221   ULONG LowId;
222   ULONG HighId;
223   ULONG OffsetToEntries;
224 } RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
225
226 typedef struct _RTL_MESSAGE_RESOURCE_DATA
227 {
228   ULONG NumberOfBlocks;
229   RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
230 } RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
231
232 typedef VOID
233 (STDCALL *PRTL_BASE_PROCESS_START_ROUTINE)(PTHREAD_START_ROUTINE StartAddress,
234   PVOID Parameter);
235
236 #endif /* __DDK_RTLTYPES_H */