Some cleanup.
[reactos.git] / reactos / include / ntos / rtltypes.h
1 /* $Id: rtltypes.h,v 1.3 2002/11/25 15:47:52 robd Exp $
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 */