1 /******************************************************************************
2 * Runtime Library Types *
3 ******************************************************************************/
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
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
25 #define HASH_STRING_ALGORITHM_DEFAULT 0
26 #define HASH_STRING_ALGORITHM_X65599 1
27 #define HASH_STRING_ALGORITHM_INVALID 0xffffffff
29 typedef struct _RTL_BITMAP
{
32 } RTL_BITMAP
, *PRTL_BITMAP
;
34 typedef struct _RTL_BITMAP_RUN
{
37 } RTL_BITMAP_RUN
, *PRTL_BITMAP_RUN
;
39 _Function_class_(RTL_QUERY_REGISTRY_ROUTINE
)
40 _IRQL_requires_max_(PASSIVE_LEVEL
)
43 (NTAPI
*PRTL_QUERY_REGISTRY_ROUTINE
)(
44 _In_z_ PWSTR ValueName
,
46 _In_reads_bytes_opt_(ValueLength
) PVOID ValueData
,
47 _In_ ULONG ValueLength
,
48 _In_opt_ PVOID Context
,
49 _In_opt_ PVOID EntryContext
);
51 typedef struct _RTL_QUERY_REGISTRY_TABLE
{
52 PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
;
59 } RTL_QUERY_REGISTRY_TABLE
, *PRTL_QUERY_REGISTRY_TABLE
;
61 typedef struct _TIME_FIELDS
{
70 } TIME_FIELDS
, *PTIME_FIELDS
;
73 #ifndef _SLIST_HEADER_
74 #define _SLIST_HEADER_
78 typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY
{
79 struct _SLIST_ENTRY
*Next
;
80 } SLIST_ENTRY
, *PSLIST_ENTRY
;
82 typedef struct _SLIST_ENTRY32
{
84 } SLIST_ENTRY32
, *PSLIST_ENTRY32
;
86 typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER
{
87 _ANONYMOUS_STRUCT
struct {
94 ULONGLONG NextEntry
:39;
95 ULONGLONG HeaderType
:1;
97 ULONGLONG Reserved
:59;
102 ULONGLONG Sequence
:48;
103 ULONGLONG HeaderType
:1;
105 ULONGLONG Reserved
:2;
106 ULONGLONG NextEntry
:60;
110 ULONGLONG Sequence
:48;
111 ULONGLONG HeaderType
:1;
112 ULONGLONG Reserved
:3;
113 ULONGLONG NextEntry
:60;
115 } SLIST_HEADER
, *PSLIST_HEADER
;
117 typedef union _SLIST_HEADER32
{
119 _ANONYMOUS_STRUCT
struct {
124 } SLIST_HEADER32
, *PSLIST_HEADER32
;
128 #define SLIST_ENTRY SINGLE_LIST_ENTRY
129 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
130 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
132 typedef SLIST_ENTRY SLIST_ENTRY32
, *PSLIST_ENTRY32
;
134 typedef union _SLIST_HEADER
{
136 _ANONYMOUS_STRUCT
struct {
141 } SLIST_HEADER
, *PSLIST_HEADER
;
143 typedef SLIST_HEADER SLIST_HEADER32
, *PSLIST_HEADER32
;
145 #endif /* defined(_WIN64) */
147 #endif /* _SLIST_HEADER_ */
149 /* Exception record flags */
150 #define EXCEPTION_NONCONTINUABLE 0x01
151 #define EXCEPTION_UNWINDING 0x02
152 #define EXCEPTION_EXIT_UNWIND 0x04
153 #define EXCEPTION_STACK_INVALID 0x08
154 #define EXCEPTION_NESTED_CALL 0x10
155 #define EXCEPTION_TARGET_UNWIND 0x20
156 #define EXCEPTION_COLLIDED_UNWIND 0x40
157 #define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
158 EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
160 #define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0)
161 #define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0)
162 #define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND)
164 #define EXCEPTION_MAXIMUM_PARAMETERS 15
166 /* Exception records */
167 typedef struct _EXCEPTION_RECORD
{
168 NTSTATUS ExceptionCode
;
169 ULONG ExceptionFlags
;
170 struct _EXCEPTION_RECORD
*ExceptionRecord
;
171 PVOID ExceptionAddress
;
172 ULONG NumberParameters
;
173 ULONG_PTR ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
174 } EXCEPTION_RECORD
, *PEXCEPTION_RECORD
;
176 typedef struct _EXCEPTION_RECORD32
{
177 NTSTATUS ExceptionCode
;
178 ULONG ExceptionFlags
;
179 ULONG ExceptionRecord
;
180 ULONG ExceptionAddress
;
181 ULONG NumberParameters
;
182 ULONG ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
183 } EXCEPTION_RECORD32
, *PEXCEPTION_RECORD32
;
185 typedef struct _EXCEPTION_RECORD64
{
186 NTSTATUS ExceptionCode
;
187 ULONG ExceptionFlags
;
188 ULONG64 ExceptionRecord
;
189 ULONG64 ExceptionAddress
;
190 ULONG NumberParameters
;
191 ULONG __unusedAlignment
;
192 ULONG64 ExceptionInformation
[EXCEPTION_MAXIMUM_PARAMETERS
];
193 } EXCEPTION_RECORD64
, *PEXCEPTION_RECORD64
;
195 typedef struct _EXCEPTION_POINTERS
{
196 PEXCEPTION_RECORD ExceptionRecord
;
197 PCONTEXT ContextRecord
;
198 } EXCEPTION_POINTERS
, *PEXCEPTION_POINTERS
;
200 /* MS definition is broken! */
201 extern BOOLEAN NTSYSAPI NlsMbCodePageTag
;
202 extern BOOLEAN NTSYSAPI NlsMbOemCodePageTag
;
203 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
204 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
206 #define SHORT_LEAST_SIGNIFICANT_BIT 0
207 #define SHORT_MOST_SIGNIFICANT_BIT 1
209 #define LONG_LEAST_SIGNIFICANT_BIT 0
210 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
211 #define LONG_2ND_MOST_SIGNIFICANT_BIT 2
212 #define LONG_MOST_SIGNIFICANT_BIT 3
214 #define RTLVERLIB_DDI(x) Wdmlib##x
217 (*PFN_RTL_IS_NTDDI_VERSION_AVAILABLE
)(
221 (*PFN_RTL_IS_SERVICE_PACK_VERSION_INSTALLED
)(
227 #ifndef _RTL_RUN_ONCE_DEF
228 #define _RTL_RUN_ONCE_DEF
230 #define RTL_RUN_ONCE_INIT {0}
232 #define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL
233 #define RTL_RUN_ONCE_ASYNC 0x00000002UL
234 #define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL
236 #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
238 #define RTL_HASH_ALLOCATED_HEADER 0x00000001
240 #define RTL_HASH_RESERVED_SIGNATURE 0
242 /* RtlVerifyVersionInfo() ComparisonType */
245 #define VER_GREATER 2
246 #define VER_GREATER_EQUAL 3
248 #define VER_LESS_EQUAL 5
252 #define VER_CONDITION_MASK 7
253 #define VER_NUM_BITS_PER_CONDITION_MASK 3
255 /* RtlVerifyVersionInfo() TypeMask */
257 #define VER_MINORVERSION 0x0000001
258 #define VER_MAJORVERSION 0x0000002
259 #define VER_BUILDNUMBER 0x0000004
260 #define VER_PLATFORMID 0x0000008
261 #define VER_SERVICEPACKMINOR 0x0000010
262 #define VER_SERVICEPACKMAJOR 0x0000020
263 #define VER_SUITENAME 0x0000040
264 #define VER_PRODUCT_TYPE 0x0000080
266 #define VER_NT_WORKSTATION 0x0000001
267 #define VER_NT_DOMAIN_CONTROLLER 0x0000002
268 #define VER_NT_SERVER 0x0000003
270 #define VER_PLATFORM_WIN32s 0
271 #define VER_PLATFORM_WIN32_WINDOWS 1
272 #define VER_PLATFORM_WIN32_NT 2
274 typedef union _RTL_RUN_ONCE
{
276 } RTL_RUN_ONCE
, *PRTL_RUN_ONCE
;
278 _Function_class_(RTL_RUN_ONCE_INIT_FN
)
280 typedef ULONG
/* LOGICAL */
281 (NTAPI
*PRTL_RUN_ONCE_INIT_FN
) (
282 _Inout_ PRTL_RUN_ONCE RunOnce
,
283 _Inout_opt_ PVOID Parameter
,
284 _Inout_opt_ PVOID
*Context
);
286 #endif /* _RTL_RUN_ONCE_DEF */
288 typedef enum _TABLE_SEARCH_RESULT
{
293 } TABLE_SEARCH_RESULT
;
295 typedef enum _RTL_GENERIC_COMPARE_RESULTS
{
299 } RTL_GENERIC_COMPARE_RESULTS
;
302 struct _RTL_AVL_TABLE
;
305 _Function_class_(RTL_AVL_COMPARE_ROUTINE
)
306 typedef RTL_GENERIC_COMPARE_RESULTS
307 (NTAPI RTL_AVL_COMPARE_ROUTINE
) (
308 _In_
struct _RTL_AVL_TABLE
*Table
,
309 _In_ PVOID FirstStruct
,
310 _In_ PVOID SecondStruct
);
311 typedef RTL_AVL_COMPARE_ROUTINE
*PRTL_AVL_COMPARE_ROUTINE
;
314 _Function_class_(RTL_AVL_ALLOCATE_ROUTINE
)
315 __drv_allocatesMem(Mem
)
317 (NTAPI RTL_AVL_ALLOCATE_ROUTINE
) (
318 _In_
struct _RTL_AVL_TABLE
*Table
,
319 _In_ CLONG ByteSize
);
320 typedef RTL_AVL_ALLOCATE_ROUTINE
*PRTL_AVL_ALLOCATE_ROUTINE
;
323 _Function_class_(RTL_AVL_FREE_ROUTINE
)
325 (NTAPI RTL_AVL_FREE_ROUTINE
) (
326 _In_
struct _RTL_AVL_TABLE
*Table
,
327 _In_
__drv_freesMem(Mem
) _Post_invalid_ PVOID Buffer
);
328 typedef RTL_AVL_FREE_ROUTINE
*PRTL_AVL_FREE_ROUTINE
;
331 _Function_class_(RTL_AVL_MATCH_FUNCTION
)
333 (NTAPI RTL_AVL_MATCH_FUNCTION
) (
334 _In_
struct _RTL_AVL_TABLE
*Table
,
336 _In_ PVOID MatchData
);
337 typedef RTL_AVL_MATCH_FUNCTION
*PRTL_AVL_MATCH_FUNCTION
;
339 typedef struct _RTL_BALANCED_LINKS
{
340 struct _RTL_BALANCED_LINKS
*Parent
;
341 struct _RTL_BALANCED_LINKS
*LeftChild
;
342 struct _RTL_BALANCED_LINKS
*RightChild
;
345 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
347 typedef struct _RTL_AVL_TABLE
{
348 RTL_BALANCED_LINKS BalancedRoot
;
349 PVOID OrderedPointer
;
350 ULONG WhichOrderedElement
;
351 ULONG NumberGenericTableElements
;
353 PRTL_BALANCED_LINKS RestartKey
;
355 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
356 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
357 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
359 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
361 typedef struct _RTL_SPLAY_LINKS
{
362 struct _RTL_SPLAY_LINKS
*Parent
;
363 struct _RTL_SPLAY_LINKS
*LeftChild
;
364 struct _RTL_SPLAY_LINKS
*RightChild
;
365 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
367 #ifndef RTL_USE_AVL_TABLES
369 struct _RTL_GENERIC_TABLE
;
372 _Function_class_(RTL_GENERIC_COMPARE_ROUTINE
)
373 typedef RTL_GENERIC_COMPARE_RESULTS
374 (NTAPI RTL_GENERIC_COMPARE_ROUTINE
) (
375 _In_
struct _RTL_GENERIC_TABLE
*Table
,
376 _In_ PVOID FirstStruct
,
377 _In_ PVOID SecondStruct
);
378 typedef RTL_GENERIC_COMPARE_ROUTINE
*PRTL_GENERIC_COMPARE_ROUTINE
;
381 _Function_class_(RTL_GENERIC_ALLOCATE_ROUTINE
)
382 __drv_allocatesMem(Mem
)
384 (NTAPI RTL_GENERIC_ALLOCATE_ROUTINE
) (
385 _In_
struct _RTL_GENERIC_TABLE
*Table
,
386 _In_ CLONG ByteSize
);
387 typedef RTL_GENERIC_ALLOCATE_ROUTINE
*PRTL_GENERIC_ALLOCATE_ROUTINE
;
390 _Function_class_(RTL_GENERIC_FREE_ROUTINE
)
392 (NTAPI RTL_GENERIC_FREE_ROUTINE
) (
393 _In_
struct _RTL_GENERIC_TABLE
*Table
,
394 _In_
__drv_freesMem(Mem
) _Post_invalid_ PVOID Buffer
);
395 typedef RTL_GENERIC_FREE_ROUTINE
*PRTL_GENERIC_FREE_ROUTINE
;
397 typedef struct _RTL_GENERIC_TABLE
{
398 PRTL_SPLAY_LINKS TableRoot
;
399 LIST_ENTRY InsertOrderList
;
400 PLIST_ENTRY OrderedPointer
;
401 ULONG WhichOrderedElement
;
402 ULONG NumberGenericTableElements
;
403 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
404 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
405 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
407 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
409 #endif /* !RTL_USE_AVL_TABLES */
411 #ifdef RTL_USE_AVL_TABLES
413 #undef RTL_GENERIC_COMPARE_ROUTINE
414 #undef PRTL_GENERIC_COMPARE_ROUTINE
415 #undef RTL_GENERIC_ALLOCATE_ROUTINE
416 #undef PRTL_GENERIC_ALLOCATE_ROUTINE
417 #undef RTL_GENERIC_FREE_ROUTINE
418 #undef PRTL_GENERIC_FREE_ROUTINE
419 #undef RTL_GENERIC_TABLE
420 #undef PRTL_GENERIC_TABLE
422 #define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE
423 #define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE
424 #define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE
425 #define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE
426 #define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE
427 #define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE
428 #define RTL_GENERIC_TABLE RTL_AVL_TABLE
429 #define PRTL_GENERIC_TABLE PRTL_AVL_TABLE
431 #endif /* RTL_USE_AVL_TABLES */
433 #define RTL_HASH_ALLOCATED_HEADER 0x00000001
435 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY
{
438 } RTL_DYNAMIC_HASH_TABLE_ENTRY
, *PRTL_DYNAMIC_HASH_TABLE_ENTRY
;
440 typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT
{
441 PLIST_ENTRY ChainHead
;
442 PLIST_ENTRY PrevLinkage
;
444 } RTL_DYNAMIC_HASH_TABLE_CONTEXT
, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT
;
446 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR
{
447 RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry
;
448 PLIST_ENTRY ChainHead
;
450 } RTL_DYNAMIC_HASH_TABLE_ENUMERATOR
, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR
;
452 typedef struct _RTL_DYNAMIC_HASH_TABLE
{
459 ULONG NonEmptyBuckets
;
460 ULONG NumEnumerators
;
462 } RTL_DYNAMIC_HASH_TABLE
, *PRTL_DYNAMIC_HASH_TABLE
;
464 typedef struct _OSVERSIONINFOA
{
465 ULONG dwOSVersionInfoSize
;
466 ULONG dwMajorVersion
;
467 ULONG dwMinorVersion
;
470 CHAR szCSDVersion
[128];
471 } OSVERSIONINFOA
, *POSVERSIONINFOA
, *LPOSVERSIONINFOA
;
473 typedef struct _OSVERSIONINFOW
{
474 ULONG dwOSVersionInfoSize
;
475 ULONG dwMajorVersion
;
476 ULONG dwMinorVersion
;
479 WCHAR szCSDVersion
[128];
480 } OSVERSIONINFOW
, *POSVERSIONINFOW
, *LPOSVERSIONINFOW
, RTL_OSVERSIONINFOW
, *PRTL_OSVERSIONINFOW
;
482 typedef struct _OSVERSIONINFOEXA
{
483 ULONG dwOSVersionInfoSize
;
484 ULONG dwMajorVersion
;
485 ULONG dwMinorVersion
;
488 CHAR szCSDVersion
[128];
489 USHORT wServicePackMajor
;
490 USHORT wServicePackMinor
;
494 } OSVERSIONINFOEXA
, *POSVERSIONINFOEXA
, *LPOSVERSIONINFOEXA
;
496 typedef struct _OSVERSIONINFOEXW
{
497 ULONG dwOSVersionInfoSize
;
498 ULONG dwMajorVersion
;
499 ULONG dwMinorVersion
;
502 WCHAR szCSDVersion
[128];
503 USHORT wServicePackMajor
;
504 USHORT wServicePackMinor
;
508 } OSVERSIONINFOEXW
, *POSVERSIONINFOEXW
, *LPOSVERSIONINFOEXW
, RTL_OSVERSIONINFOEXW
, *PRTL_OSVERSIONINFOEXW
;
511 typedef OSVERSIONINFOEXW OSVERSIONINFOEX
;
512 typedef POSVERSIONINFOEXW POSVERSIONINFOEX
;
513 typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX
;
514 typedef OSVERSIONINFOW OSVERSIONINFO
;
515 typedef POSVERSIONINFOW POSVERSIONINFO
;
516 typedef LPOSVERSIONINFOW LPOSVERSIONINFO
;
518 typedef OSVERSIONINFOEXA OSVERSIONINFOEX
;
519 typedef POSVERSIONINFOEXA POSVERSIONINFOEX
;
520 typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX
;
521 typedef OSVERSIONINFOA OSVERSIONINFO
;
522 typedef POSVERSIONINFOA POSVERSIONINFO
;
523 typedef LPOSVERSIONINFOA LPOSVERSIONINFO
;
526 #define HASH_ENTRY_KEY(x) ((x)->Signature)
531 #define RTL_SYSTEM_VOLUME_INFORMATION_FOLDER L"System Volume Information"
533 _Function_class_(RTL_ALLOCATE_STRING_ROUTINE
)
534 _IRQL_requires_max_(PASSIVE_LEVEL
)
535 __drv_allocatesMem(Mem
)
537 (NTAPI
*PRTL_ALLOCATE_STRING_ROUTINE
)(
538 _In_ SIZE_T NumberOfBytes
);
540 #if _WIN32_WINNT >= 0x0600
541 _Function_class_(RTL_REALLOCATE_STRING_ROUTINE
)
542 _IRQL_requires_max_(PASSIVE_LEVEL
)
543 __drv_allocatesMem(Mem
)
545 (NTAPI
*PRTL_REALLOCATE_STRING_ROUTINE
)(
546 _In_ SIZE_T NumberOfBytes
,
551 (NTAPI
*PRTL_FREE_STRING_ROUTINE
)(
552 _In_
__drv_freesMem(Mem
) _Post_invalid_ PVOID Buffer
);
554 extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine
;
555 extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine
;
557 #if _WIN32_WINNT >= 0x0600
558 extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine
;
561 _Function_class_(RTL_HEAP_COMMIT_ROUTINE
)
564 (NTAPI
*PRTL_HEAP_COMMIT_ROUTINE
) (
566 _Inout_ PVOID
*CommitAddress
,
567 _Inout_ PSIZE_T CommitSize
);
569 typedef struct _RTL_HEAP_PARAMETERS
{
571 SIZE_T SegmentReserve
;
572 SIZE_T SegmentCommit
;
573 SIZE_T DeCommitFreeBlockThreshold
;
574 SIZE_T DeCommitTotalFreeThreshold
;
575 SIZE_T MaximumAllocationSize
;
576 SIZE_T VirtualMemoryThreshold
;
577 SIZE_T InitialCommit
;
578 SIZE_T InitialReserve
;
579 PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
;
581 } RTL_HEAP_PARAMETERS
, *PRTL_HEAP_PARAMETERS
;
583 #if (NTDDI_VERSION >= NTDDI_WIN2K)
585 typedef struct _GENERATE_NAME_CONTEXT
{
587 BOOLEAN CheckSumInserted
;
588 _Field_range_(<=, 8) UCHAR NameLength
;
590 _Field_range_(<=, 4) ULONG ExtensionLength
;
591 WCHAR ExtensionBuffer
[4];
592 ULONG LastIndexValue
;
593 } GENERATE_NAME_CONTEXT
, *PGENERATE_NAME_CONTEXT
;
595 typedef struct _PREFIX_TABLE_ENTRY
{
598 struct _PREFIX_TABLE_ENTRY
*NextPrefixTree
;
599 RTL_SPLAY_LINKS Links
;
601 } PREFIX_TABLE_ENTRY
, *PPREFIX_TABLE_ENTRY
;
603 typedef struct _PREFIX_TABLE
{
606 PPREFIX_TABLE_ENTRY NextPrefixTree
;
607 } PREFIX_TABLE
, *PPREFIX_TABLE
;
609 typedef struct _UNICODE_PREFIX_TABLE_ENTRY
{
612 struct _UNICODE_PREFIX_TABLE_ENTRY
*NextPrefixTree
;
613 struct _UNICODE_PREFIX_TABLE_ENTRY
*CaseMatch
;
614 RTL_SPLAY_LINKS Links
;
615 PUNICODE_STRING Prefix
;
616 } UNICODE_PREFIX_TABLE_ENTRY
, *PUNICODE_PREFIX_TABLE_ENTRY
;
618 typedef struct _UNICODE_PREFIX_TABLE
{
621 PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree
;
622 PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry
;
623 } UNICODE_PREFIX_TABLE
, *PUNICODE_PREFIX_TABLE
;
625 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
627 #if (NTDDI_VERSION >= NTDDI_WINXP)
628 typedef struct _COMPRESSED_DATA_INFO
{
629 USHORT CompressionFormatAndEngine
;
630 UCHAR CompressionUnitShift
;
634 USHORT NumberOfChunks
;
635 ULONG CompressedChunkSizes
[ANYSIZE_ARRAY
];
636 } COMPRESSED_DATA_INFO
, *PCOMPRESSED_DATA_INFO
;