Mainly just added some small #ifdef sections for a little portability.
[reactos.git] / reactos / include / ntos / rtltypes.h
1 /* $Id: rtltypes.h,v 1.2 2002/11/24 18:24:51 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 typedef NTSTATUS STDCALL_FUNC
71 (*PRTL_QUERY_REGISTRY_ROUTINE)(PWSTR ValueName,
72 ULONG ValueType,
73 PVOID ValueData,
74 ULONG ValueLength,
75 PVOID Context,
76 PVOID EntryContext);
77
78 typedef struct _RTL_QUERY_REGISTRY_TABLE
79 {
80 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
81 ULONG Flags;
82 PWSTR Name;
83 PVOID EntryContext;
84 ULONG DefaultType;
85 PVOID DefaultData;
86 ULONG DefaultLength;
87 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
88
89 typedef struct _COMPRESSED_DATA_INFO
90 {
91 USHORT CompressionFormatAndEngine;
92 UCHAR CompressionUnitShift;
93 UCHAR ChunkShift;
94 UCHAR ClusterShift;
95 UCHAR Reserved;
96 USHORT NumberOfChunks;
97 ULONG CompressedChunkSizes[1];
98 } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
99
100 typedef struct _GENERATE_NAME_CONTEXT
101 {
102 USHORT Checksum;
103 BOOLEAN CheckSumInserted;
104 UCHAR NameLength;
105 WCHAR NameBuffer[8];
106 ULONG ExtensionLength;
107 WCHAR ExtensionBuffer[4];
108 ULONG LastIndexValue;
109 } GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
110
111 typedef struct _RTL_SPLAY_LINKS
112 {
113 struct _RTL_SPLAY_LINKS *Parent;
114 struct _RTL_SPLAY_LINKS *LeftChild;
115 struct _RTL_SPLAY_LINKS *RightChild;
116 } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
117
118 #else /* __USE_W32API */
119
120 #include <ddk/ntifs.h>
121
122 #endif /* __USE_W32API */
123
124 typedef struct _INITIAL_TEB
125 {
126 ULONG StackCommit;
127 ULONG StackReserve;
128 PVOID StackBase;
129 PVOID StackLimit;
130 PVOID StackAllocate;
131 } INITIAL_TEB, *PINITIAL_TEB;
132
133 typedef struct _RTL_HEAP_DEFINITION
134 {
135 ULONG Length;
136 ULONG Unknown[11];
137 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
138
139 typedef struct _RTL_ATOM_TABLE
140 {
141 ULONG TableSize;
142 ULONG NumberOfAtoms;
143 PVOID Lock; /* fast mutex (kernel mode)/ critical section (user mode) */
144 PVOID HandleTable;
145 LIST_ENTRY Slot[0];
146 } RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
147
148 typedef struct _LB_RANGE
149 {
150 UCHAR upper;
151 UCHAR lower;
152 } LB_RANGE;
153
154 typedef struct _RTL_NLS_DATA
155 {
156 USHORT CodePage;
157 USHORT MaxCharacterSize; // SBCS = 1, DBCS = 2
158 WCHAR DefaultCharacter;
159 WCHAR char1;
160 WCHAR char2;
161 WCHAR char3;
162 USHORT DbcsFlag;
163 LB_RANGE LeadByteRange[6];
164 USHORT reserved;
165 PWCHAR MultiByteToUnicode;
166 PCHAR UnicodeToMultiByte;
167 PWCHAR DosMultiByteToUnicode;
168 PCHAR DbcsTags;
169 } RTL_NLS_DATA, *PRTL_NLS_DATA;
170
171 typedef struct _RTL_NLS_TABLE
172 {
173 RTL_NLS_DATA OemInfo;
174 RTL_NLS_DATA AnsiInfo;
175 PWCHAR UpcaseTable;
176 PWCHAR DowncaseTable;
177 } RTL_NLS_TABLE, *PRTL_NLS_TABLE;
178
179
180 typedef struct _RTL_GENERIC_TABLE
181 {
182 PVOID RootElement;
183 ULONG Unknown2;
184 ULONG Unknown3;
185 ULONG Unknown4;
186 ULONG Unknown5;
187 ULONG ElementCount;
188 PVOID CompareRoutine;
189 PVOID AllocateRoutine;
190 PVOID FreeRoutine;
191 ULONG UserParameter;
192 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
193
194
195 typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
196 {
197 USHORT Length;
198 USHORT Flags;
199 UCHAR Text[1];
200 } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
201
202 typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
203 {
204 ULONG LowId;
205 ULONG HighId;
206 ULONG OffsetToEntries;
207 } RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
208
209 typedef struct _RTL_MESSAGE_RESOURCE_DATA
210 {
211 ULONG NumberOfBlocks;
212 RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
213 } RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
214
215 #endif /* __DDK_RTLTYPES_H */