[PSDK]
[reactos.git] / include / xdk / rtltypes.h
1 /******************************************************************************
2 * Runtime Library Types *
3 ******************************************************************************/
4
5 $if (_WDMDDK_)
6 #define RTL_REGISTRY_ABSOLUTE 0
7 #define RTL_REGISTRY_SERVICES 1
8 #define RTL_REGISTRY_CONTROL 2
9 #define RTL_REGISTRY_WINDOWS_NT 3
10 #define RTL_REGISTRY_DEVICEMAP 4
11 #define RTL_REGISTRY_USER 5
12 #define RTL_REGISTRY_MAXIMUM 6
13 #define RTL_REGISTRY_HANDLE 0x40000000
14 #define RTL_REGISTRY_OPTIONAL 0x80000000
15
16 /* RTL_QUERY_REGISTRY_TABLE.Flags */
17 #define RTL_QUERY_REGISTRY_SUBKEY 0x00000001
18 #define RTL_QUERY_REGISTRY_TOPKEY 0x00000002
19 #define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
20 #define RTL_QUERY_REGISTRY_NOVALUE 0x00000008
21 #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
22 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020
23 #define RTL_QUERY_REGISTRY_DELETE 0x00000040
24
25 #define HASH_STRING_ALGORITHM_DEFAULT 0
26 #define HASH_STRING_ALGORITHM_X65599 1
27 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
28
29 typedef struct _RTL_BITMAP {
30 ULONG SizeOfBitMap;
31 PULONG Buffer;
32 } RTL_BITMAP, *PRTL_BITMAP;
33
34 typedef struct _RTL_BITMAP_RUN {
35 ULONG StartingIndex;
36 ULONG NumberOfBits;
37 } RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
38
39 typedef NTSTATUS
40 (NTAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
41 IN PWSTR ValueName,
42 IN ULONG ValueType,
43 IN PVOID ValueData,
44 IN ULONG ValueLength,
45 IN PVOID Context,
46 IN PVOID EntryContext);
47
48 typedef struct _RTL_QUERY_REGISTRY_TABLE {
49 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
50 ULONG Flags;
51 PCWSTR Name;
52 PVOID EntryContext;
53 ULONG DefaultType;
54 PVOID DefaultData;
55 ULONG DefaultLength;
56 } RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
57
58 typedef struct _TIME_FIELDS {
59 CSHORT Year;
60 CSHORT Month;
61 CSHORT Day;
62 CSHORT Hour;
63 CSHORT Minute;
64 CSHORT Second;
65 CSHORT Milliseconds;
66 CSHORT Weekday;
67 } TIME_FIELDS, *PTIME_FIELDS;
68
69 /* Slist Header */
70 #ifndef _SLIST_HEADER_
71 #define _SLIST_HEADER_
72
73 #if defined(_WIN64)
74
75 typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
76 struct _SLIST_ENTRY *Next;
77 } SLIST_ENTRY, *PSLIST_ENTRY;
78
79 typedef struct _SLIST_ENTRY32 {
80 ULONG Next;
81 } SLIST_ENTRY32, *PSLIST_ENTRY32;
82
83 typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
84 _ANONYMOUS_STRUCT struct {
85 ULONGLONG Alignment;
86 ULONGLONG Region;
87 } DUMMYSTRUCTNAME;
88 struct {
89 ULONGLONG Depth:16;
90 ULONGLONG Sequence:9;
91 ULONGLONG NextEntry:39;
92 ULONGLONG HeaderType:1;
93 ULONGLONG Init:1;
94 ULONGLONG Reserved:59;
95 ULONGLONG Region:3;
96 } Header8;
97 struct {
98 ULONGLONG Depth:16;
99 ULONGLONG Sequence:48;
100 ULONGLONG HeaderType:1;
101 ULONGLONG Init:1;
102 ULONGLONG Reserved:2;
103 ULONGLONG NextEntry:60;
104 } Header16;
105 struct {
106 ULONGLONG Depth:16;
107 ULONGLONG Sequence:48;
108 ULONGLONG HeaderType:1;
109 ULONGLONG Reserved:3;
110 ULONGLONG NextEntry:60;
111 } HeaderX64;
112 } SLIST_HEADER, *PSLIST_HEADER;
113
114 typedef union _SLIST_HEADER32 {
115 ULONGLONG Alignment;
116 _ANONYMOUS_STRUCT struct {
117 SLIST_ENTRY32 Next;
118 USHORT Depth;
119 USHORT Sequence;
120 } DUMMYSTRUCTNAME;
121 } SLIST_HEADER32, *PSLIST_HEADER32;
122
123 #else
124
125 #define SLIST_ENTRY SINGLE_LIST_ENTRY
126 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
127 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
128
129 typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32;
130
131 typedef union _SLIST_HEADER {
132 ULONGLONG Alignment;
133 _ANONYMOUS_STRUCT struct {
134 SLIST_ENTRY Next;
135 USHORT Depth;
136 USHORT Sequence;
137 } DUMMYSTRUCTNAME;
138 } SLIST_HEADER, *PSLIST_HEADER;
139
140 typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32;
141
142 #endif /* defined(_WIN64) */
143
144 #endif /* _SLIST_HEADER_ */
145
146 /* MS definition is broken! */
147 extern BOOLEAN NTSYSAPI NlsMbCodePageTag;
148 extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag;
149 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
150 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
151
152 #define SHORT_LEAST_SIGNIFICANT_BIT 0
153 #define SHORT_MOST_SIGNIFICANT_BIT 1
154
155 #define LONG_LEAST_SIGNIFICANT_BIT 0
156 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
157 #define LONG_2ND_MOST_SIGNIFICANT_BIT 2
158 #define LONG_MOST_SIGNIFICANT_BIT 3
159
160 #define RTLVERLIB_DDI(x) Wdmlib##x
161
162 typedef BOOLEAN
163 (*PFN_RTL_IS_NTDDI_VERSION_AVAILABLE)(
164 IN ULONG Version);
165
166 typedef BOOLEAN
167 (*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED)(
168 IN ULONG Version);
169
170 $endif (_WDMDDK_)
171 $if (_NTDDK_)
172
173 #ifndef _RTL_RUN_ONCE_DEF
174 #define _RTL_RUN_ONCE_DEF
175
176 #define RTL_RUN_ONCE_INIT {0}
177
178 #define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL
179 #define RTL_RUN_ONCE_ASYNC 0x00000002UL
180 #define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL
181
182 #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
183
184 #define RTL_HASH_ALLOCATED_HEADER 0x00000001
185
186 #define RTL_HASH_RESERVED_SIGNATURE 0
187
188 /* RtlVerifyVersionInfo() ComparisonType */
189
190 #define VER_EQUAL 1
191 #define VER_GREATER 2
192 #define VER_GREATER_EQUAL 3
193 #define VER_LESS 4
194 #define VER_LESS_EQUAL 5
195 #define VER_AND 6
196 #define VER_OR 7
197
198 #define VER_CONDITION_MASK 7
199 #define VER_NUM_BITS_PER_CONDITION_MASK 3
200
201 /* RtlVerifyVersionInfo() TypeMask */
202
203 #define VER_MINORVERSION 0x0000001
204 #define VER_MAJORVERSION 0x0000002
205 #define VER_BUILDNUMBER 0x0000004
206 #define VER_PLATFORMID 0x0000008
207 #define VER_SERVICEPACKMINOR 0x0000010
208 #define VER_SERVICEPACKMAJOR 0x0000020
209 #define VER_SUITENAME 0x0000040
210 #define VER_PRODUCT_TYPE 0x0000080
211
212 #define VER_NT_WORKSTATION 0x0000001
213 #define VER_NT_DOMAIN_CONTROLLER 0x0000002
214 #define VER_NT_SERVER 0x0000003
215
216 #define VER_PLATFORM_WIN32s 0
217 #define VER_PLATFORM_WIN32_WINDOWS 1
218 #define VER_PLATFORM_WIN32_NT 2
219
220 typedef union _RTL_RUN_ONCE {
221 PVOID Ptr;
222 } RTL_RUN_ONCE, *PRTL_RUN_ONCE;
223
224 typedef ULONG /* LOGICAL */
225 (NTAPI *PRTL_RUN_ONCE_INIT_FN) (
226 IN OUT PRTL_RUN_ONCE RunOnce,
227 IN OUT PVOID Parameter OPTIONAL,
228 IN OUT PVOID *Context OPTIONAL);
229
230 #endif /* _RTL_RUN_ONCE_DEF */
231
232 typedef enum _TABLE_SEARCH_RESULT {
233 TableEmptyTree,
234 TableFoundNode,
235 TableInsertAsLeft,
236 TableInsertAsRight
237 } TABLE_SEARCH_RESULT;
238
239 typedef enum _RTL_GENERIC_COMPARE_RESULTS {
240 GenericLessThan,
241 GenericGreaterThan,
242 GenericEqual
243 } RTL_GENERIC_COMPARE_RESULTS;
244
245 // Forwarder
246 struct _RTL_AVL_TABLE;
247
248 typedef RTL_GENERIC_COMPARE_RESULTS
249 (NTAPI *PRTL_AVL_COMPARE_ROUTINE) (
250 IN struct _RTL_AVL_TABLE *Table,
251 IN PVOID FirstStruct,
252 IN PVOID SecondStruct);
253
254 typedef PVOID
255 (NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (
256 IN struct _RTL_AVL_TABLE *Table,
257 IN CLONG ByteSize);
258
259 typedef VOID
260 (NTAPI *PRTL_AVL_FREE_ROUTINE) (
261 IN struct _RTL_AVL_TABLE *Table,
262 IN PVOID Buffer);
263
264 typedef NTSTATUS
265 (NTAPI *PRTL_AVL_MATCH_FUNCTION) (
266 IN struct _RTL_AVL_TABLE *Table,
267 IN PVOID UserData,
268 IN PVOID MatchData);
269
270 typedef struct _RTL_BALANCED_LINKS {
271 struct _RTL_BALANCED_LINKS *Parent;
272 struct _RTL_BALANCED_LINKS *LeftChild;
273 struct _RTL_BALANCED_LINKS *RightChild;
274 CHAR Balance;
275 UCHAR Reserved[3];
276 } RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
277
278 typedef struct _RTL_AVL_TABLE {
279 RTL_BALANCED_LINKS BalancedRoot;
280 PVOID OrderedPointer;
281 ULONG WhichOrderedElement;
282 ULONG NumberGenericTableElements;
283 ULONG DepthOfTree;
284 PRTL_BALANCED_LINKS RestartKey;
285 ULONG DeleteCount;
286 PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
287 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
288 PRTL_AVL_FREE_ROUTINE FreeRoutine;
289 PVOID TableContext;
290 } RTL_AVL_TABLE, *PRTL_AVL_TABLE;
291
292 #ifndef RTL_USE_AVL_TABLES
293
294 struct _RTL_GENERIC_TABLE;
295
296 typedef RTL_GENERIC_COMPARE_RESULTS
297 (NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (
298 IN struct _RTL_GENERIC_TABLE *Table,
299 IN PVOID FirstStruct,
300 IN PVOID SecondStruct);
301
302 typedef PVOID
303 (NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
304 IN struct _RTL_GENERIC_TABLE *Table,
305 IN CLONG ByteSize);
306
307 typedef VOID
308 (NTAPI *PRTL_GENERIC_FREE_ROUTINE) (
309 IN struct _RTL_GENERIC_TABLE *Table,
310 IN PVOID Buffer);
311
312 typedef struct _RTL_SPLAY_LINKS {
313 struct _RTL_SPLAY_LINKS *Parent;
314 struct _RTL_SPLAY_LINKS *LeftChild;
315 struct _RTL_SPLAY_LINKS *RightChild;
316 } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
317
318 typedef struct _RTL_GENERIC_TABLE {
319 PRTL_SPLAY_LINKS TableRoot;
320 LIST_ENTRY InsertOrderList;
321 PLIST_ENTRY OrderedPointer;
322 ULONG WhichOrderedElement;
323 ULONG NumberGenericTableElements;
324 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
325 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
326 PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
327 PVOID TableContext;
328 } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
329
330 #endif /* !RTL_USE_AVL_TABLES */
331
332 #ifdef RTL_USE_AVL_TABLES
333
334 #undef PRTL_GENERIC_COMPARE_ROUTINE
335 #undef RTL_GENERIC_COMPARE_ROUTINE
336 #undef PRTL_GENERIC_ALLOCATE_ROUTINE
337 #undef RTL_GENERIC_ALLOCATE_ROUTINE
338 #undef PRTL_GENERIC_FREE_ROUTINE
339 #undef RTL_GENERIC_FREE_ROUTINE
340 #undef RTL_GENERIC_TABLE
341 #undef PRTL_GENERIC_TABLE
342
343 #define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE
344 #define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE
345 #define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE
346 #define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE
347 #define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE
348 #define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE
349 #define RTL_GENERIC_TABLE RTL_AVL_TABLE
350 #define PRTL_GENERIC_TABLE PRTL_AVL_TABLE
351
352 #endif /* RTL_USE_AVL_TABLES */
353
354 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY {
355 LIST_ENTRY Linkage;
356 ULONG_PTR Signature;
357 } RTL_DYNAMIC_HASH_TABLE_ENTRY, *PRTL_DYNAMIC_HASH_TABLE_ENTRY;
358
359 typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT {
360 PLIST_ENTRY ChainHead;
361 PLIST_ENTRY PrevLinkage;
362 ULONG_PTR Signature;
363 } RTL_DYNAMIC_HASH_TABLE_CONTEXT, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT;
364
365 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR {
366 RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry;
367 PLIST_ENTRY ChainHead;
368 ULONG BucketIndex;
369 } RTL_DYNAMIC_HASH_TABLE_ENUMERATOR, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR;
370
371 typedef struct _RTL_DYNAMIC_HASH_TABLE {
372 ULONG Flags;
373 ULONG Shift;
374 ULONG TableSize;
375 ULONG Pivot;
376 ULONG DivisorMask;
377 ULONG NumEntries;
378 ULONG NonEmptyBuckets;
379 ULONG NumEnumerators;
380 PVOID Directory;
381 } RTL_DYNAMIC_HASH_TABLE, *PRTL_DYNAMIC_HASH_TABLE;
382
383 typedef struct _OSVERSIONINFOA {
384 ULONG dwOSVersionInfoSize;
385 ULONG dwMajorVersion;
386 ULONG dwMinorVersion;
387 ULONG dwBuildNumber;
388 ULONG dwPlatformId;
389 CHAR szCSDVersion[128];
390 } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
391
392 typedef struct _OSVERSIONINFOW {
393 ULONG dwOSVersionInfoSize;
394 ULONG dwMajorVersion;
395 ULONG dwMinorVersion;
396 ULONG dwBuildNumber;
397 ULONG dwPlatformId;
398 WCHAR szCSDVersion[128];
399 } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
400
401 typedef struct _OSVERSIONINFOEXA {
402 ULONG dwOSVersionInfoSize;
403 ULONG dwMajorVersion;
404 ULONG dwMinorVersion;
405 ULONG dwBuildNumber;
406 ULONG dwPlatformId;
407 CHAR szCSDVersion[128];
408 USHORT wServicePackMajor;
409 USHORT wServicePackMinor;
410 USHORT wSuiteMask;
411 UCHAR wProductType;
412 UCHAR wReserved;
413 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
414
415 typedef struct _OSVERSIONINFOEXW {
416 ULONG dwOSVersionInfoSize;
417 ULONG dwMajorVersion;
418 ULONG dwMinorVersion;
419 ULONG dwBuildNumber;
420 ULONG dwPlatformId;
421 WCHAR szCSDVersion[128];
422 USHORT wServicePackMajor;
423 USHORT wServicePackMinor;
424 USHORT wSuiteMask;
425 UCHAR wProductType;
426 UCHAR wReserved;
427 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
428
429 #ifdef UNICODE
430 typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
431 typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
432 typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
433 typedef OSVERSIONINFOW OSVERSIONINFO;
434 typedef POSVERSIONINFOW POSVERSIONINFO;
435 typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
436 #else
437 typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
438 typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
439 typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
440 typedef OSVERSIONINFOA OSVERSIONINFO;
441 typedef POSVERSIONINFOA POSVERSIONINFO;
442 typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
443 #endif /* UNICODE */
444
445 #define HASH_ENTRY_KEY(x) ((x)->Signature)
446
447 $endif (_NTDDK_)
448 $if (_NTIFS_)
449
450 #define RTL_SYSTEM_VOLUME_INFORMATION_FOLDER L"System Volume Information"
451
452 typedef PVOID
453 (NTAPI *PRTL_ALLOCATE_STRING_ROUTINE)(
454 IN SIZE_T NumberOfBytes);
455
456 #if _WIN32_WINNT >= 0x0600
457 typedef PVOID
458 (NTAPI *PRTL_REALLOCATE_STRING_ROUTINE)(
459 IN SIZE_T NumberOfBytes,
460 IN PVOID Buffer);
461 #endif
462
463 typedef VOID
464 (NTAPI *PRTL_FREE_STRING_ROUTINE)(
465 IN PVOID Buffer);
466
467 extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
468 extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
469
470 #if _WIN32_WINNT >= 0x0600
471 extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
472 #endif
473
474 typedef NTSTATUS
475 (NTAPI * PRTL_HEAP_COMMIT_ROUTINE) (
476 IN PVOID Base,
477 IN OUT PVOID *CommitAddress,
478 IN OUT PSIZE_T CommitSize);
479
480 typedef struct _RTL_HEAP_PARAMETERS {
481 ULONG Length;
482 SIZE_T SegmentReserve;
483 SIZE_T SegmentCommit;
484 SIZE_T DeCommitFreeBlockThreshold;
485 SIZE_T DeCommitTotalFreeThreshold;
486 SIZE_T MaximumAllocationSize;
487 SIZE_T VirtualMemoryThreshold;
488 SIZE_T InitialCommit;
489 SIZE_T InitialReserve;
490 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
491 SIZE_T Reserved[2];
492 } RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
493
494 #if (NTDDI_VERSION >= NTDDI_WIN2K)
495
496 typedef struct _GENERATE_NAME_CONTEXT {
497 USHORT Checksum;
498 BOOLEAN CheckSumInserted;
499 UCHAR NameLength;
500 WCHAR NameBuffer[8];
501 ULONG ExtensionLength;
502 WCHAR ExtensionBuffer[4];
503 ULONG LastIndexValue;
504 } GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
505
506 typedef struct _PREFIX_TABLE_ENTRY {
507 CSHORT NodeTypeCode;
508 CSHORT NameLength;
509 struct _PREFIX_TABLE_ENTRY *NextPrefixTree;
510 RTL_SPLAY_LINKS Links;
511 PSTRING Prefix;
512 } PREFIX_TABLE_ENTRY, *PPREFIX_TABLE_ENTRY;
513
514 typedef struct _PREFIX_TABLE {
515 CSHORT NodeTypeCode;
516 CSHORT NameLength;
517 PPREFIX_TABLE_ENTRY NextPrefixTree;
518 } PREFIX_TABLE, *PPREFIX_TABLE;
519
520 typedef struct _UNICODE_PREFIX_TABLE_ENTRY {
521 CSHORT NodeTypeCode;
522 CSHORT NameLength;
523 struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
524 struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
525 RTL_SPLAY_LINKS Links;
526 PUNICODE_STRING Prefix;
527 } UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;
528
529 typedef struct _UNICODE_PREFIX_TABLE {
530 CSHORT NodeTypeCode;
531 CSHORT NameLength;
532 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
533 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
534 } UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
535
536 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
537
538 #if (NTDDI_VERSION >= NTDDI_WINXP)
539 typedef struct _COMPRESSED_DATA_INFO {
540 USHORT CompressionFormatAndEngine;
541 UCHAR CompressionUnitShift;
542 UCHAR ChunkShift;
543 UCHAR ClusterShift;
544 UCHAR Reserved;
545 USHORT NumberOfChunks;
546 ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
547 } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
548 #endif
549 $endif