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
)(
224 typedef struct _OSVERSIONINFOA
{
225 ULONG dwOSVersionInfoSize
;
226 ULONG dwMajorVersion
;
227 ULONG dwMinorVersion
;
230 CHAR szCSDVersion
[128];
231 } OSVERSIONINFOA
, *POSVERSIONINFOA
, *LPOSVERSIONINFOA
;
233 typedef struct _OSVERSIONINFOW
{
234 ULONG dwOSVersionInfoSize
;
235 ULONG dwMajorVersion
;
236 ULONG dwMinorVersion
;
239 WCHAR szCSDVersion
[128];
240 } OSVERSIONINFOW
, *POSVERSIONINFOW
, *LPOSVERSIONINFOW
, RTL_OSVERSIONINFOW
, *PRTL_OSVERSIONINFOW
;
242 typedef struct _OSVERSIONINFOEXA
{
243 ULONG dwOSVersionInfoSize
;
244 ULONG dwMajorVersion
;
245 ULONG dwMinorVersion
;
248 CHAR szCSDVersion
[128];
249 USHORT wServicePackMajor
;
250 USHORT wServicePackMinor
;
254 } OSVERSIONINFOEXA
, *POSVERSIONINFOEXA
, *LPOSVERSIONINFOEXA
;
256 typedef struct _OSVERSIONINFOEXW
{
257 ULONG dwOSVersionInfoSize
;
258 ULONG dwMajorVersion
;
259 ULONG dwMinorVersion
;
262 WCHAR szCSDVersion
[128];
263 USHORT wServicePackMajor
;
264 USHORT wServicePackMinor
;
268 } OSVERSIONINFOEXW
, *POSVERSIONINFOEXW
, *LPOSVERSIONINFOEXW
, RTL_OSVERSIONINFOEXW
, *PRTL_OSVERSIONINFOEXW
;
271 typedef OSVERSIONINFOEXW OSVERSIONINFOEX
;
272 typedef POSVERSIONINFOEXW POSVERSIONINFOEX
;
273 typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX
;
274 typedef OSVERSIONINFOW OSVERSIONINFO
;
275 typedef POSVERSIONINFOW POSVERSIONINFO
;
276 typedef LPOSVERSIONINFOW LPOSVERSIONINFO
;
278 typedef OSVERSIONINFOEXA OSVERSIONINFOEX
;
279 typedef POSVERSIONINFOEXA POSVERSIONINFOEX
;
280 typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX
;
281 typedef OSVERSIONINFOA OSVERSIONINFO
;
282 typedef POSVERSIONINFOA POSVERSIONINFO
;
283 typedef LPOSVERSIONINFOA LPOSVERSIONINFO
;
289 #ifndef _RTL_RUN_ONCE_DEF
290 #define _RTL_RUN_ONCE_DEF
292 #define RTL_RUN_ONCE_INIT {0}
294 #define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL
295 #define RTL_RUN_ONCE_ASYNC 0x00000002UL
296 #define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL
298 #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
300 #define RTL_HASH_ALLOCATED_HEADER 0x00000001
302 #define RTL_HASH_RESERVED_SIGNATURE 0
304 /* RtlVerifyVersionInfo() ComparisonType */
307 #define VER_GREATER 2
308 #define VER_GREATER_EQUAL 3
310 #define VER_LESS_EQUAL 5
314 #define VER_CONDITION_MASK 7
315 #define VER_NUM_BITS_PER_CONDITION_MASK 3
317 /* RtlVerifyVersionInfo() TypeMask */
319 #define VER_MINORVERSION 0x0000001
320 #define VER_MAJORVERSION 0x0000002
321 #define VER_BUILDNUMBER 0x0000004
322 #define VER_PLATFORMID 0x0000008
323 #define VER_SERVICEPACKMINOR 0x0000010
324 #define VER_SERVICEPACKMAJOR 0x0000020
325 #define VER_SUITENAME 0x0000040
326 #define VER_PRODUCT_TYPE 0x0000080
328 #define VER_NT_WORKSTATION 0x0000001
329 #define VER_NT_DOMAIN_CONTROLLER 0x0000002
330 #define VER_NT_SERVER 0x0000003
332 #define VER_PLATFORM_WIN32s 0
333 #define VER_PLATFORM_WIN32_WINDOWS 1
334 #define VER_PLATFORM_WIN32_NT 2
336 typedef union _RTL_RUN_ONCE
{
338 } RTL_RUN_ONCE
, *PRTL_RUN_ONCE
;
340 _Function_class_(RTL_RUN_ONCE_INIT_FN
)
342 typedef ULONG
/* LOGICAL */
343 (NTAPI
*PRTL_RUN_ONCE_INIT_FN
) (
344 _Inout_ PRTL_RUN_ONCE RunOnce
,
345 _Inout_opt_ PVOID Parameter
,
346 _Inout_opt_ PVOID
*Context
);
348 #endif /* _RTL_RUN_ONCE_DEF */
350 typedef enum _TABLE_SEARCH_RESULT
{
355 } TABLE_SEARCH_RESULT
;
357 typedef enum _RTL_GENERIC_COMPARE_RESULTS
{
361 } RTL_GENERIC_COMPARE_RESULTS
;
364 struct _RTL_AVL_TABLE
;
367 _Function_class_(RTL_AVL_COMPARE_ROUTINE
)
368 typedef RTL_GENERIC_COMPARE_RESULTS
369 (NTAPI RTL_AVL_COMPARE_ROUTINE
) (
370 _In_
struct _RTL_AVL_TABLE
*Table
,
371 _In_ PVOID FirstStruct
,
372 _In_ PVOID SecondStruct
);
373 typedef RTL_AVL_COMPARE_ROUTINE
*PRTL_AVL_COMPARE_ROUTINE
;
376 _Function_class_(RTL_AVL_ALLOCATE_ROUTINE
)
377 __drv_allocatesMem(Mem
)
379 (NTAPI RTL_AVL_ALLOCATE_ROUTINE
) (
380 _In_
struct _RTL_AVL_TABLE
*Table
,
381 _In_ CLONG ByteSize
);
382 typedef RTL_AVL_ALLOCATE_ROUTINE
*PRTL_AVL_ALLOCATE_ROUTINE
;
385 _Function_class_(RTL_AVL_FREE_ROUTINE
)
387 (NTAPI RTL_AVL_FREE_ROUTINE
) (
388 _In_
struct _RTL_AVL_TABLE
*Table
,
389 _In_
__drv_freesMem(Mem
) _Post_invalid_ PVOID Buffer
);
390 typedef RTL_AVL_FREE_ROUTINE
*PRTL_AVL_FREE_ROUTINE
;
393 _Function_class_(RTL_AVL_MATCH_FUNCTION
)
395 (NTAPI RTL_AVL_MATCH_FUNCTION
) (
396 _In_
struct _RTL_AVL_TABLE
*Table
,
398 _In_ PVOID MatchData
);
399 typedef RTL_AVL_MATCH_FUNCTION
*PRTL_AVL_MATCH_FUNCTION
;
401 typedef struct _RTL_BALANCED_LINKS
{
402 struct _RTL_BALANCED_LINKS
*Parent
;
403 struct _RTL_BALANCED_LINKS
*LeftChild
;
404 struct _RTL_BALANCED_LINKS
*RightChild
;
407 } RTL_BALANCED_LINKS
, *PRTL_BALANCED_LINKS
;
409 typedef struct _RTL_AVL_TABLE
{
410 RTL_BALANCED_LINKS BalancedRoot
;
411 PVOID OrderedPointer
;
412 ULONG WhichOrderedElement
;
413 ULONG NumberGenericTableElements
;
415 PRTL_BALANCED_LINKS RestartKey
;
417 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
;
418 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
;
419 PRTL_AVL_FREE_ROUTINE FreeRoutine
;
421 } RTL_AVL_TABLE
, *PRTL_AVL_TABLE
;
423 typedef struct _RTL_SPLAY_LINKS
{
424 struct _RTL_SPLAY_LINKS
*Parent
;
425 struct _RTL_SPLAY_LINKS
*LeftChild
;
426 struct _RTL_SPLAY_LINKS
*RightChild
;
427 } RTL_SPLAY_LINKS
, *PRTL_SPLAY_LINKS
;
429 #ifndef RTL_USE_AVL_TABLES
431 struct _RTL_GENERIC_TABLE
;
434 _Function_class_(RTL_GENERIC_COMPARE_ROUTINE
)
435 typedef RTL_GENERIC_COMPARE_RESULTS
436 (NTAPI RTL_GENERIC_COMPARE_ROUTINE
) (
437 _In_
struct _RTL_GENERIC_TABLE
*Table
,
438 _In_ PVOID FirstStruct
,
439 _In_ PVOID SecondStruct
);
440 typedef RTL_GENERIC_COMPARE_ROUTINE
*PRTL_GENERIC_COMPARE_ROUTINE
;
443 _Function_class_(RTL_GENERIC_ALLOCATE_ROUTINE
)
444 __drv_allocatesMem(Mem
)
446 (NTAPI RTL_GENERIC_ALLOCATE_ROUTINE
) (
447 _In_
struct _RTL_GENERIC_TABLE
*Table
,
448 _In_ CLONG ByteSize
);
449 typedef RTL_GENERIC_ALLOCATE_ROUTINE
*PRTL_GENERIC_ALLOCATE_ROUTINE
;
452 _Function_class_(RTL_GENERIC_FREE_ROUTINE
)
454 (NTAPI RTL_GENERIC_FREE_ROUTINE
) (
455 _In_
struct _RTL_GENERIC_TABLE
*Table
,
456 _In_
__drv_freesMem(Mem
) _Post_invalid_ PVOID Buffer
);
457 typedef RTL_GENERIC_FREE_ROUTINE
*PRTL_GENERIC_FREE_ROUTINE
;
459 typedef struct _RTL_GENERIC_TABLE
{
460 PRTL_SPLAY_LINKS TableRoot
;
461 LIST_ENTRY InsertOrderList
;
462 PLIST_ENTRY OrderedPointer
;
463 ULONG WhichOrderedElement
;
464 ULONG NumberGenericTableElements
;
465 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
;
466 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
;
467 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
;
469 } RTL_GENERIC_TABLE
, *PRTL_GENERIC_TABLE
;
471 #endif /* !RTL_USE_AVL_TABLES */
473 #ifdef RTL_USE_AVL_TABLES
475 #undef RTL_GENERIC_COMPARE_ROUTINE
476 #undef PRTL_GENERIC_COMPARE_ROUTINE
477 #undef RTL_GENERIC_ALLOCATE_ROUTINE
478 #undef PRTL_GENERIC_ALLOCATE_ROUTINE
479 #undef RTL_GENERIC_FREE_ROUTINE
480 #undef PRTL_GENERIC_FREE_ROUTINE
481 #undef RTL_GENERIC_TABLE
482 #undef PRTL_GENERIC_TABLE
484 #define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE
485 #define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE
486 #define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE
487 #define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE
488 #define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE
489 #define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE
490 #define RTL_GENERIC_TABLE RTL_AVL_TABLE
491 #define PRTL_GENERIC_TABLE PRTL_AVL_TABLE
493 #endif /* RTL_USE_AVL_TABLES */
495 #define RTL_HASH_ALLOCATED_HEADER 0x00000001
497 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY
{
500 } RTL_DYNAMIC_HASH_TABLE_ENTRY
, *PRTL_DYNAMIC_HASH_TABLE_ENTRY
;
502 typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT
{
503 PLIST_ENTRY ChainHead
;
504 PLIST_ENTRY PrevLinkage
;
506 } RTL_DYNAMIC_HASH_TABLE_CONTEXT
, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT
;
508 typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR
{
509 RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry
;
510 PLIST_ENTRY ChainHead
;
512 } RTL_DYNAMIC_HASH_TABLE_ENUMERATOR
, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR
;
514 typedef struct _RTL_DYNAMIC_HASH_TABLE
{
521 ULONG NonEmptyBuckets
;
522 ULONG NumEnumerators
;
524 } RTL_DYNAMIC_HASH_TABLE
, *PRTL_DYNAMIC_HASH_TABLE
;
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
;