6#define FAST_FAIL_LEGACY_GS_VIOLATION 0
7#define FAST_FAIL_VTGUARD_CHECK_FAILURE 1
8#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2
9#define FAST_FAIL_CORRUPT_LIST_ENTRY 3
10#define FAST_FAIL_INCORRECT_STACK 4
11#define FAST_FAIL_INVALID_ARG 5
12#define FAST_FAIL_GS_COOKIE_INIT 6
13#define FAST_FAIL_FATAL_APP_EXIT 7
14#define FAST_FAIL_RANGE_CHECK_FAILURE 8
15#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9
16#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10
17#define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11
18#define FAST_FAIL_INVALID_FIBER_SWITCH 12
19#define FAST_FAIL_INVALID_SET_OF_CONTEXT 13
20#define FAST_FAIL_INVALID_REFERENCE_COUNT 14
21#define FAST_FAIL_INVALID_JUMP_BUFFER 18
22#define FAST_FAIL_MRDATA_MODIFIED 19
23#define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xFFFFFFFF
34#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && (defined(_M_CEE_PURE) || defined(_M_CEE_SAFE))
35#define NO_KERNEL_LIST_ENTRY_CHECKS
38#if !defined(EXTRA_KERNEL_LIST_ENTRY_CHECKS) && defined(__REACTOS__)
39#define EXTRA_KERNEL_LIST_ENTRY_CHECKS
42#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
44#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x }
51 ListHead->Flink = ListHead->Blink = ListHead;
60 return (
BOOLEAN)(ListHead->Flink == ListHead);
71 OldFlink =
Entry->Flink;
72 OldBlink =
Entry->Blink;
73 OldFlink->
Blink = OldBlink;
74 OldBlink->
Flink = OldFlink;
75 return (
BOOLEAN)(OldFlink == OldBlink);
78#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
111 OldFlink =
Entry->Flink;
112 OldBlink =
Entry->Blink;
113#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
114#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
121 OldFlink->
Blink = OldBlink;
122 OldBlink->
Flink = OldFlink;
123 return (
BOOLEAN)(OldFlink == OldBlink);
134#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
136#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
137 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
141 Entry = ListHead->Flink;
142 Flink =
Entry->Flink;
143#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
147 ListHead->Flink = Flink;
148 Flink->
Blink = ListHead;
160#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
162#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
163 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
167 Entry = ListHead->Blink;
168 Blink =
Entry->Blink;
169#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
173 ListHead->Blink = Blink;
174 Blink->
Flink = ListHead;
185#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
188 OldBlink = ListHead->
Blink;
189 Entry->Flink = ListHead;
190 Entry->Blink = OldBlink;
191#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
192 if (OldBlink->
Flink != ListHead)
196 ListHead->Blink =
Entry;
206#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
209 OldFlink = ListHead->
Flink;
210 Entry->Flink = OldFlink;
211 Entry->Blink = ListHead;
212#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
213 if (OldFlink->
Blink != ListHead)
217 ListHead->Flink =
Entry;
228#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
232 ListHead->Blink->Flink = ListToAppend;
233 ListHead->Blink = ListToAppend->Blink;
234 ListToAppend->Blink->Flink = ListHead;
244 FirstEntry = ListHead->
Next;
245 if (FirstEntry !=
NULL) {
257 Entry->Next = ListHead->Next;
258 ListHead->Next =
Entry;
279#define RtlCopyMemory(Destination, Source, Length) \
280 memcpy(Destination, Source, Length)
282#define RtlCopyBytes RtlCopyMemory
293#define RtlCopyMemoryNonTemporal RtlCopyMemory
301#define RtlEqualLuid(Luid1, Luid2) \
302 (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))
310#define RtlEqualMemory(Destination, Source, Length) \
311 (!memcmp(Destination, Source, Length))
319#define RtlFillMemory(Destination, Length, Fill) \
320 memset(Destination, Fill, Length)
322#define RtlFillBytes RtlFillMemory
362#define RtlMoveMemory(Destination, Source, Length) \
363 memmove(Destination, Source, Length)
380#define RtlZeroMemory(Destination, Length) \
381 memset(Destination, 0, Length)
383#define RtlZeroBytes RtlZeroMemory
386#if (NTDDI_VERSION >= NTDDI_WIN2K)
426#define RtlAnsiStringToUnicodeSize(String) ( \
427 NLS_MB_CODE_PAGE_TAG ? \
428 RtlxAnsiStringToUnicodeSize(String) : \
429 ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
567#if !defined(_AMD64_) && !defined(_IA64_)
584#if defined(_X86_) || defined(_IA64_)
742#define RtlIntPtrToUnicodeString(Value, Base, String) \
743 RtlInt64ToUnicodeString(Value, Base, String)
745#define RtlIntPtrToUnicodeString(Value, Base, String) \
746 RtlIntegerToUnicodeString(Value, Base, String)
753#define RtlIsZeroLuid(_L1) \
754 ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
787#define SHORT_SIZE (sizeof(USHORT))
788#define SHORT_MASK (SHORT_SIZE - 1)
789#define LONG_SIZE (sizeof(LONG))
790#define LONGLONG_SIZE (sizeof(LONGLONG))
791#define LONG_MASK (LONG_SIZE - 1)
792#define LONGLONG_MASK (LONGLONG_SIZE - 1)
793#define LOWBYTE_MASK 0x00FF
795#define FIRSTBYTE(VALUE) ((VALUE) & LOWBYTE_MASK)
796#define SECONDBYTE(VALUE) (((VALUE) >> 8) & LOWBYTE_MASK)
797#define THIRDBYTE(VALUE) (((VALUE) >> 16) & LOWBYTE_MASK)
798#define FOURTHBYTE(VALUE) (((VALUE) >> 24) & LOWBYTE_MASK)
831#define RtlStoreUlong(Address,Value) \
832 *(ULONG UNALIGNED *)(Address) = (Value)
839#define RtlStoreUlonglong(Address,Value) \
840 *(ULONGLONG UNALIGNED *)(Address) = (Value)
847#define RtlStoreUshort(Address,Value) \
848 *(USHORT UNALIGNED *)(Address) = (Value)
855#define RtlRetrieveUshort(DestAddress,SrcAddress) \
856 *(USHORT UNALIGNED *)(DestAddress) = *(USHORT)(SrcAddress)
863#define RtlRetrieveUlong(DestAddress,SrcAddress) \
864 *(ULONG UNALIGNED *)(DestAddress) = *(PULONG)(SrcAddress)
868#define RtlStoreUlong(Address,Value) \
869 if ((ULONG_PTR)(Address) & LONG_MASK) { \
870 ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
871 ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \
872 ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \
873 ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \
876 *((PULONG)(Address)) = (ULONG) (Value); \
879#define RtlStoreUlonglong(Address,Value) \
880 if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \
881 RtlStoreUlong((ULONG_PTR)(Address), \
882 (ULONGLONG)(Value) & 0xFFFFFFFF); \
883 RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \
884 (ULONGLONG)(Value) >> 32); \
886 *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \
889#define RtlStoreUshort(Address,Value) \
890 if ((ULONG_PTR)(Address) & SHORT_MASK) { \
891 ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
892 ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \
895 *((PUSHORT) (Address)) = (USHORT)Value; \
898#define RtlRetrieveUshort(DestAddress,SrcAddress) \
899 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
901 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
902 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
906 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
909#define RtlRetrieveUlong(DestAddress,SrcAddress) \
910 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
912 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
913 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
914 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
915 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
919 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
930#define RtlStoreUlongPtr(Address,Value) RtlStoreUlonglong(Address,Value)
932#define RtlStoreUlongPtr(Address,Value) RtlStoreUlong(Address,Value)
1005#define RtlUnicodeStringToAnsiSize(String) ( \
1006 NLS_MB_CODE_PAGE_TAG ? \
1007 RtlxUnicodeStringToAnsiSize(String) : \
1008 ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
1081#ifndef RTL_USE_AVL_TABLES
1176#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8
1267RtlVolumeDeviceToDosName(
1441RtlUnicodeStringToCountedOemString(
1577#if (NTDDI_VERSION >= NTDDI_VISTASP1)
1987#if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
1998#if (NTDDI_VERSION >= NTDDI_WINXP)
2344#if defined(_M_AMD64)
2354 if ((
Length /= 4) != 0) {
2357 if ((
Length -= 1) == 0) {
2368#define RtlFillMemoryUlonglong(Destination, Length, Pattern) \
2369 __stosq((PULONG64)(Destination), Pattern, (Length) / 8)
2395#if (NTDDI_VERSION >= NTDDI_WS03)
2405#if (NTDDI_VERSION >= NTDDI_WS03SP1)
2464#if (NTDDI_VERSION >= NTDDI_VISTA)
2470RtlNumberOfSetBitsUlongPtr(
2636#if (NTDDI_VERSION >= NTDDI_WIN7)
2831#if !defined(MIDL_PASS)
2841 ret.QuadPart = SignedInteger;
2853 ret.QuadPart = UnsignedInteger;
2867 Result.QuadPart = LargeInteger.QuadPart << ShiftCount;
2881 Result.QuadPart = (
ULONG64)LargeInteger.QuadPart >> ShiftCount;
2908 Difference.
QuadPart = -Subtrahend.QuadPart;
2922 Difference.
QuadPart = Minuend.QuadPart - Subtrahend.QuadPart;
2957RtlInitEmptyAnsiString(
2972RtlInitEmptyUnicodeString(
2985#if defined(_AMD64_) || defined(_IA64_)
2997 ret.QuadPart = Multiplicand.QuadPart * Multiplier;
3038#if (NTDDI_VERSION >= NTDDI_WIN2K)
3056#define MultiplyHigh __mulh
3057#define UnsignedMultiplyHigh __umulh
3071 Pos = (Dividend.QuadPart >= 0);
3072 ret64 = UnsignedMultiplyHigh(
Pos ? Dividend.QuadPart : -Dividend.QuadPart,
3073 MagicDivisor.QuadPart);
3074 ret64 >>= ShiftCount;
3099#define RtlLargeIntegerAnd(Result, Source, Mask) \
3100 Result.QuadPart = Source.QuadPart & Mask.QuadPart
3111 ret.QuadPart = LargeInteger.QuadPart >> ShiftCount;
3120#define RtlLargeIntegerEqualTo(X,Y) \
3121 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
3129 volatile char* vptr = (
volatile char*)Pointer;
3130#if defined(_M_AMD64)
3133 char * endptr = (
char *)vptr +
Size;
3134 while (vptr < endptr) {
3141#if defined(_M_AMD64)
3152#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1)
3155#define RtlLargeIntegerGreaterThan(X,Y) ( \
3156 (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
3157 ((X).HighPart > (Y).HighPart) \
3160#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \
3161 (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
3162 ((X).HighPart > (Y).HighPart) \
3165#define RtlLargeIntegerNotEqualTo(X,Y) ( \
3166 (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
3169#define RtlLargeIntegerLessThan(X,Y) ( \
3170 (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
3171 ((X).HighPart < (Y).HighPart) \
3174#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \
3175 (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
3176 ((X).HighPart < (Y).HighPart) \
3179#define RtlLargeIntegerGreaterThanZero(X) ( \
3180 (((X).HighPart == 0) && ((X).LowPart > 0)) || \
3181 ((X).HighPart > 0 ) \
3184#define RtlLargeIntegerGreaterOrEqualToZero(X) ( (X).HighPart >= 0 )
3186#define RtlLargeIntegerEqualToZero(X) ( !((X).LowPart | (X).HighPart) )
3188#define RtlLargeIntegerNotEqualToZero(X) ( ((X).LowPart | (X).HighPart) )
3190#define RtlLargeIntegerLessThanZero(X) ( ((X).HighPart < 0) )
3192#define RtlLargeIntegerLessOrEqualToZero(X) ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) )
3197#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
3198#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
3199#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
3201#if defined(_MSC_VER) && !defined(__clang__)
3202# define __assert_annotationA(msg) __annotation(L"Debug", L"AssertFail", L ## msg)
3203# define __assert_annotationW(msg) __annotation(L"Debug", L"AssertFail", msg)
3205# define __assert_annotationA(msg) \
3206 DbgPrint("Assertion failed at %s(%d): %s\n", __FILE__, __LINE__, msg)
3207# define __assert_annotationW(msg) \
3208 DbgPrint("Assertion failed at %s(%d): %S\n", __FILE__, __LINE__, msg)
3212# define NT_ANALYSIS_ASSUME(_exp) _Analysis_assume_(_exp)
3214# define NT_ANALYSIS_ASSUME(_exp) ((void)0)
3216# define NT_ANALYSIS_ASSUME(_exp) __noop(_exp)
3219#define NT_ASSERT_ACTION(exp) \
3220 (NT_ANALYSIS_ASSUME(exp), \
3222 (__assert_annotationA(#exp), \
3223 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3225#define NT_ASSERTMSG_ACTION(msg, exp) \
3226 (NT_ANALYSIS_ASSUME(exp), \
3228 (__assert_annotationA(msg), \
3229 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3231#define NT_ASSERTMSGW_ACTION(msg, exp) \
3232 (NT_ANALYSIS_ASSUME(exp), \
3234 (__assert_annotationW(msg), \
3235 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3239#define RTL_VERIFY(exp) \
3241 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
3243#define RTL_VERIFYMSG(msg, exp) \
3245 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ), FALSE : TRUE)
3247#define RTL_SOFT_VERIFY(exp) \
3249 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
3251#define RTL_SOFT_VERIFYMSG(msg, exp) \
3253 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
3256#define ASSERT (void)RTL_VERIFY
3257#define ASSERTMSG (void)RTL_VERIFYMSG
3258#define RTL_SOFT_ASSERT (void)RTL_SOFT_VERIFY
3259#define RTL_SOFT_ASSERTMSG (void)RTL_SOFT_VERIFYMSG
3261#define NT_VERIFY NT_ASSERT_ACTION
3262#define NT_VERIFYMSG NT_ASSERTMSG_ACTION
3263#define NT_VERIFYMSGW NT_ASSERTMSGW_ACTION
3265#define NT_ASSERT_ASSUME (void)NT_ASSERT_ACTION
3266#define NT_ASSERTMSG_ASSUME (void)NT_ASSERTMSG_ACTION
3267#define NT_ASSERTMSGW_ASSUME (void)NT_ASSERTMSGW_ACTION
3269#define NT_ASSERT_NOASSUME (void)NT_ASSERT_ACTION
3270#define NT_ASSERTMSG_NOASSUME (void)NT_ASSERTMSG_ACTION
3271#define NT_ASSERTMSGW_NOASSUME (void)NT_ASSERTMSGW_ACTION
3275#define ASSERT(exp) ((void)0)
3276#define ASSERTMSG(msg, exp) ((void)0)
3278#define RTL_SOFT_ASSERT(exp) ((void)0)
3279#define RTL_SOFT_ASSERTMSG(msg, exp) ((void)0)
3281#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
3282#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3284#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
3285#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3287#define NT_VERIFY(exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3288#define NT_VERIFYMSG(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3289#define NT_VERIFYMSGW(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3291#define NT_ASSERT_ASSUME(exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3292#define NT_ASSERTMSG_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3293#define NT_ASSERTMSGW_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3295#define NT_ASSERT_NOASSUME(exp) ((void)0)
3296#define NT_ASSERTMSG_NOASSUME(msg, exp) ((void)0)
3297#define NT_ASSERTMSGW_NOASSUME(msg, exp) ((void)0)
3301#define NT_FRE_ASSERT (void)NT_ASSERT_ACTION
3302#define NT_FRE_ASSERTMSG (void)NT_ASSERTMSG_ACTION
3303#define NT_FRE_ASSERTMSGW (void)NT_ASSERTMSGW_ACTION
3305#ifdef NT_ASSERT_ALWAYS_ASSUMES
3306# define NT_ASSERT NT_ASSERT_ASSUME
3307# define NT_ASSERTMSG NT_ASSERTMSG_ASSUME
3308# define NT_ASSERTMSGW NT_ASSERTMSGW_ASSUME
3310# define NT_ASSERT NT_ASSERT_NOASSUME
3311# define NT_ASSERTMSG NT_ASSERTMSG_NOASSUME
3312# define NT_ASSERTMSGW NT_ASSERTMSGW_NOASSUME
3315#if defined(_MSC_VER) && (defined(__REACTOS__) || defined(ASSERT_ALWAYS_NT_ASSERT)) && !defined(_BLDR_)
3317#define ASSERT NT_ASSERT
3319#define ASSERTMSG NT_ASSERTMSG
3321#define ASSERTMSGW NT_ASSERTMSGW
3323#define RTL_VERIFY NT_VERIFY
3326#define InitializeListHead32(ListHead) (\
3327 (ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead)))
3329#if !defined(_WINBASE_)
3331#if defined(_WIN64) && !defined(_NTSYSTEM_) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || !defined(_NTOSP_))
3355 if (((
ULONG_PTR)SListHead & 0xf) != 0) {
3359 SListHead->Region = (
ULONG_PTR)SListHead & VRN_MASK;
3361 SListHead->Region = 0;
3364 SListHead->Alignment = 0;
3384#define InterlockedFlushSList(SListHead) \
3385 ExInterlockedFlushSList(SListHead)
3389#define InterlockedPushEntrySList(SListHead, SListEntry) \
3390 ExpInterlockedPushEntrySList(SListHead, SListEntry)
3392#define InterlockedPopEntrySList(SListHead) \
3393 ExpInterlockedPopEntrySList(SListHead)
3395#define InterlockedFlushSList(SListHead) \
3396 ExpInterlockedFlushSList(SListHead)
3400#define QueryDepthSList(SListHead) \
3401 ExQueryDepthSList(SListHead)
3405#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk) ((ContextEx)->Chunk.Offset)
3406#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk) ((ContextEx)->Chunk.Length)
3407#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk) \
3408 ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk)))
3409#define RTL_CONTEXT_OFFSET(Context, Chunk) \
3410 RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk)
3411#define RTL_CONTEXT_LENGTH(Context, Chunk) \
3412 RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk)
3413#define RTL_CONTEXT_CHUNK(Context, Chunk) \
3414 RTL_CONTEXT_EX_CHUNK((PCONTEXT_EX)(Context + 1), \
3415 (PCONTEXT_EX)(Context + 1), \
3426#ifndef RtlIsNtDdiVersionAvailable
3427#define RtlIsNtDdiVersionAvailable WdmlibRtlIsNtDdiVersionAvailable
3430#ifndef RtlIsServicePackVersionInstalled
3431#define RtlIsServicePackVersionInstalled WdmlibRtlIsServicePackVersionInstalled
3434#define RtlInterlockedSetBits(Flags, Flag) \
3435 InterlockedOr((PLONG)(Flags), Flag)
3437#define RtlInterlockedAndBits(Flags, Flag) \
3438 InterlockedAnd((PLONG)(Flags), Flag)
3440#define RtlInterlockedClearBits(Flags, Flag) \
3441 RtlInterlockedAndBits(Flags, ~(Flag))
3443#define RtlInterlockedXorBits(Flags, Flag) \
3444 InterlockedXor(Flags, Flag)
3446#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag) \
3447 (VOID) RtlInterlockedSetBits(Flags, Flag)
3449#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag) \
3450 (VOID) RtlInterlockedAndBits(Flags, Flag)
3452#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag) \
3453 RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag))
3459#ifdef RTL_USE_AVL_TABLES
3461#define RtlInitializeGenericTable RtlInitializeGenericTableAvl
3462#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl
3463#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl
3464#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl
3465#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl
3466#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl
3467#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl
3468#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
3469#define RtlGetElementGenericTable RtlGetElementGenericTableAvl
3470#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl
3471#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl
3475#define RtlInitializeSplayLinks(Links) { \
3476 PRTL_SPLAY_LINKS _SplayLinks; \
3477 _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
3478 _SplayLinks->Parent = _SplayLinks; \
3479 _SplayLinks->LeftChild = NULL; \
3480 _SplayLinks->RightChild = NULL; \
3483#define RtlIsLeftChild(Links) \
3484 (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3486#define RtlIsRightChild(Links) \
3487 (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3489#define RtlRightChild(Links) \
3490 ((PRTL_SPLAY_LINKS)(Links))->RightChild
3492#define RtlIsRoot(Links) \
3493 (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
3495#define RtlLeftChild(Links) \
3496 ((PRTL_SPLAY_LINKS)(Links))->LeftChild
3498#define RtlParent(Links) \
3499 ((PRTL_SPLAY_LINKS)(Links))->Parent
3501#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
3503 PRTL_SPLAY_LINKS _SplayParent; \
3504 PRTL_SPLAY_LINKS _SplayChild; \
3505 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3506 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3507 _SplayParent->LeftChild = _SplayChild; \
3508 _SplayChild->Parent = _SplayParent; \
3511#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
3513 PRTL_SPLAY_LINKS _SplayParent; \
3514 PRTL_SPLAY_LINKS _SplayChild; \
3515 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3516 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3517 _SplayParent->RightChild = _SplayChild; \
3518 _SplayChild->Parent = _SplayParent; \
3521#if !defined(MIDL_PASS)
3526RtlConvertLongToLuid(
3553#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
3554#define RtlGetCallersAddress(CallersAddress, CallersCaller) \
3555 *CallersAddress = (PVOID)_ReturnAddress(); \
3556 *CallersCaller = NULL;
3558#if (NTDDI_VERSION >= NTDDI_WIN2K)
3568#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
3570#if (NTDDI_VERSION >= NTDDI_WIN7)
3589 Context->ChainHead = Enumerator->ChainHead;
3590 Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
3655#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
3656#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
3658#define RtlUnicodeStringToOemSize(STRING) (NLS_MB_OEM_CODE_PAGE_TAG ? \
3659 RtlxUnicodeStringToOemSize(STRING) : \
3660 ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
3663#define RtlOemStringToUnicodeSize(STRING) ( \
3664 NLS_MB_OEM_CODE_PAGE_TAG ? \
3665 RtlxOemStringToUnicodeSize(STRING) : \
3666 ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
3669#define RtlOemStringToCountedUnicodeSize(STRING) ( \
3670 (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
3673#define RtlOffsetToPointer(B,O) ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))
3674#define RtlPointerToOffset(B,P) ((ULONG)(((PCHAR)(P)) - ((PCHAR)(B))))
NTSYSAPI VOID NTAPI RtlGenerate8dot3Name(_In_ PCUNICODE_STRING Name, _In_ BOOLEAN AllowExtendedCharacters, _Inout_ PGENERATE_NAME_CONTEXT Context, _Inout_ PUNICODE_STRING Name8dot3)
static GENERIC_MAPPING GenericMapping
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
VOID NTAPI RtlInitializeGenericTableAvl(IN OUT PRTL_AVL_TABLE Table, IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_AVL_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
static WCHAR ServiceName[]
NTSYSAPI ULONG NTAPI RtlRandomEx(PULONG Seed)
OSVERSIONINFOW VersionInfo
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
static const WCHAR Signature[]
static const WCHAR Message[]
BOOLEAN NTAPI RtlIsValidOemCharacter(IN PWCHAR Char)
#define __drv_freesMem(kind)
#define _IRQL_requires_max_(irql)
#define __drv_allocatesMem(kind)
BOOLEAN RtlTimeFieldsToTime(IN PTIME_FIELDS TimeFields, IN PLARGE_INTEGER Time)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define RtlCompareMemory(s1, s2, l)
#define RemoveTailList(ListHead)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
_In_ ULONG FramesToCapture
_In_ ULONG _Out_opt_ PULONG BackTraceHash
VOID NTAPI RtlInitializeGenericTable(IN PRTL_GENERIC_TABLE Table, IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
_In_ GUID _In_ PVOID ValueData
VOID NTAPI RtlFreeOemString(POEM_STRING OemString)
BOOLEAN NTAPI RtlTimeToSecondsSince1970(PLARGE_INTEGER Time, PULONG ElapsedSeconds)
BOOLEAN NTAPI RtlIsNameLegalDOS8Dot3(_In_ PUNICODE_STRING Name, _Inout_opt_ POEM_STRING OemName, _Inout_opt_ PBOOLEAN NameContainsSpaces)
NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS)
NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP, PULONG, ULONG)
NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP)
NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG, PCWSTR, PCWSTR, ULONG, PVOID, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW *, DWORD, DWORDLONG)
NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR)
NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG)
NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING, PCSZ)
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP, PRTL_BITMAP_RUN, ULONG, BOOLEAN)
NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG, UINT, UINT *)
NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG, LONGLONG, INT)
NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG)
NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING, PCWSTR)
NTSYSAPI ULONG WINAPI RtlFindLongestRunClear(PCRTL_BITMAP, PULONG)
NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG, ULONG, UNICODE_STRING *)
NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING *, const STRING *, BOOLEAN)
NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP)
NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID)
NTSYSAPI BOOLEAN WINAPI RtlAreBitsClear(PCRTL_BITMAP, ULONG, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP, ULONG, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR, PSID, BOOLEAN)
NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP)
NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP, ULONG, ULONG)
NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide(ULONGLONG, ULONGLONG, ULONGLONG *)
NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *, LPDWORD)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG)
NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG, LONGLONG)
NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int, const UNICODE_STRING *, UNICODE_STRING *)
NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR, ULONG, SECURITY_INFORMATION)
NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP, ULONG, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR)
NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT, PUCHAR, ULONG, PUCHAR, ULONG, PULONG)
NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP, ULONG, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT, UINT)
NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT, INT)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP, ULONG, PULONG)
NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP, ULONG, ULONG)
NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG, INT, INT *)
NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *, const STRING *)
NTSYSAPI void WINAPI RtlCopyLuid(PLUID, const LUID *)
NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD, PSID, PSID)
NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP, ULONG, ULONG)
NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP, ULONG, ULONG)
NTSYSAPI ULONG WINAPI RtlFindNextForwardRunClear(PCRTL_BITMAP, ULONG, PULONG)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
PPC_QUAL void __stosb(unsigned char *Dest, const unsigned char Data, unsigned long Count)
NTSTATUS NTAPI RtlUnicodeToUTF8N(CHAR *utf8_dest, ULONG utf8_bytes_max, ULONG *utf8_bytes_written, const WCHAR *uni_src, ULONG uni_bytes)
#define RtlFillMemoryUlong(dst, len, val)
unsigned __int64 * PULONG64
static PTIME_FIELDS TimeFields
DWORD SECURITY_INFORMATION
#define _In_reads_bytes_(size)
#define _Out_writes_bytes_(size)
#define _Out_writes_bytes_to_(size, count)
#define _Out_range_(lb, ub)
#define _Out_writes_bytes_all_(size)
#define _Writable_bytes_(size)
#define _Out_writes_(size)
#define _Outptr_opt_result_maybenull_
#define _Post_equal_to_(expr)
#define _At_(target, annos)
#define _Must_inspect_result_
#define _Inout_updates_bytes_(size)
#define _Out_writes_bytes_to_opt_(size, count)
#define _In_reads_bytes_opt_(size)
#define _Post_writable_byte_size_(size)
#define _Pre_readable_size_(size)
#define _Post_satisfies_(cond)
#define _Out_writes_to_(size, count)
#define _In_range_(lb, ub)
#define _Out_writes_bytes_opt_(size)
#define _Maybe_raises_SEH_exception_
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
NTSYSAPI NTSTATUS NTAPI RtlCreateRegistryKey(_In_ ULONG RelativeTo, _In_ PWSTR Path)
NTSYSAPI NTSTATUS NTAPI RtlAddAce(_Inout_ PACL Acl, _In_ ULONG AceRevision, _In_ ULONG StartingAceIndex, _In_reads_bytes_(AceListLength) PVOID AceList, _In_ ULONG AceListLength)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG OwnerSize
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
_In_ const STRING * String2
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeString(_When_(AllocateDestinationString, _Out_ _At_(DestinationString->Buffer, __drv_allocatesMem(Mem))) _When_(!AllocateDestinationString, _Inout_) PUNICODE_STRING DestinationString, _In_ PCUNICODE_STRING SourceString, _In_ BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlCompressBuffer(_In_ USHORT CompressionFormatAndEngine, _In_reads_bytes_(UncompressedBufferSize) PUCHAR UncompressedBuffer, _In_ ULONG UncompressedBufferSize, _Out_writes_bytes_to_(CompressedBufferSize, *FinalCompressedSize) PUCHAR CompressedBuffer, _In_ ULONG CompressedBufferSize, _In_ ULONG UncompressedChunkSize, _Out_ PULONG FinalCompressedSize, _In_ PVOID WorkSpace)
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlHashUnicodeString(_In_ CONST UNICODE_STRING *String, _In_ BOOLEAN CaseInSensitive, _In_ ULONG HashAlgorithm, _Out_ PULONG HashValue)
_When_(Status< 0, _Out_range_(>, 0)) _When_(Status >=0
_Out_ PLARGE_INTEGER Time
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID PrimaryGroup
_In_ const STRING _In_ BOOLEAN CaseInSensitive
_In_ PSID_IDENTIFIER_AUTHORITY _In_ UCHAR SubAuthorityCount
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
NTSYSAPI NTSTATUS NTAPI RtlGetCompressionWorkSpaceSize(_In_ USHORT CompressionFormatAndEngine, _Out_ PULONG CompressBufferWorkSpaceSize, _Out_ PULONG CompressFragmentWorkSpaceSize)
_Out_ PCPTABLEINFO CodePageTable
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToMultiByteSize(PULONG MbSize, PCWCH UnicodeString, ULONG UnicodeSize)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG SaclSize
_Inout_opt_ POEM_STRING _Out_opt_ PBOOLEAN NameContainsSpaces
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlGetAce(PACL Acl, ULONG AceIndex, PVOID *Ace)
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG BytesInUnicodeString
_In_ const STRING _In_ BOOLEAN CaseInsensitive
_In_ ULONG _In_ ULONG AceFlags
_In_opt_ PSID _In_opt_ BOOLEAN GroupDefaulted
_In_ PSID _In_ BOOLEAN AllocateDestinationString
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
_Must_inspect_result_ NTSYSAPI LONG NTAPI RtlCompareUnicodeStrings(_In_reads_(String1Length) PCWCH String1, _In_ SIZE_T String1Length, _In_reads_(String2Length) PCWCH String2, _In_ SIZE_T String2Length, _In_ BOOLEAN CaseInSensitive)
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE _In_opt_ PVOID _In_opt_ PVOID Environment
NTSYSAPI NTSTATUS NTAPI RtlOemStringToUnicodeString(PUNICODE_STRING DestinationString, PCOEM_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI ULONG NTAPI RtlxAnsiStringToUnicodeSize(PCANSI_STRING AnsiString)
NTSYSAPI LONG NTAPI RtlCompareUnicodeString(PCUNICODE_STRING String1, PCUNICODE_STRING String2, BOOLEAN CaseInsensitive)
NTSYSAPI NTSTATUS NTAPI RtlGetSaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN SaclPresent, _Out_ PACL *Sacl, _Out_ PBOOLEAN SaclDefaulted)
NTSYSAPI BOOLEAN NTAPI RtlValidSid(IN PSID Sid)
NTSYSAPI CHAR NTAPI RtlUpperChar(CHAR Source)
NTSYSAPI BOOLEAN NTAPI RtlEqualPrefixSid(PSID Sid1, PSID Sid2)
_In_ ULONG _In_ ULONGLONG ConditionMask
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
NTSYSAPI ULONG NTAPI RtlRandom(_Inout_ PULONG Seed)
_Out_writes_bytes_to_opt_ BufferLength PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToMultiByteN(PCHAR MbString, ULONG MbSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
_In_opt_ PSID _In_opt_ BOOLEAN OwnerDefaulted
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL Sacl
_Out_ _Inout_ POEM_STRING DestinationString
_In_ ULONG _In_ SECURITY_INFORMATION RequiredInformation
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(_In_ PSID Sid)
_In_ ULONG _In_ ULONG CompressedBufferSize
_In_ ULONG _In_ ULONG _Out_ PULONG FinalUncompressedSize
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PCUNICODE_STRING Source)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID _Inout_ PULONG PrimaryGroupSize
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
NTSYSAPI NTSTATUS NTAPI RtlGetGroupSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PSID *Group, _Out_ PBOOLEAN GroupDefaulted)
NTSYSAPI PVOID NTAPI RtlFreeSid(_In_ _Post_invalid_ PSID Sid)
NTSYSAPI VOID NTAPI RtlTimeToTimeFields(PLARGE_INTEGER Time, PTIME_FIELDS TimeFields)
NTSYSAPI ULONG NTAPI RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString)
_Out_ PULONG ElapsedSeconds
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, _In_ UCHAR SubAuthorityCount, _In_ ULONG SubAuthority0, _In_ ULONG SubAuthority1, _In_ ULONG SubAuthority2, _In_ ULONG SubAuthority3, _In_ ULONG SubAuthority4, _In_ ULONG SubAuthority5, _In_ ULONG SubAuthority6, _In_ ULONG SubAuthority7, _Outptr_ PSID *Sid)
NTSYSAPI ULONG NTAPI RtlWalkFrameChain(_Out_writes_(Count -(Flags > > RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT)) PVOID *Callers, _In_ ULONG Count, _In_ ULONG Flags)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG AbsoluteSecurityDescriptorSize
NTSYSAPI PSID_IDENTIFIER_AUTHORITY NTAPI RtlIdentifierAuthoritySid(PSID Sid)
_In_ ULONG SecurityDescriptorLength
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeToString(PUNICODE_STRING Destination, PCWSTR Source)
NTSYSAPI NTSTATUS NTAPI RtlDeleteAce(PACL Acl, ULONG AceIndex)
NTSYSAPI VOID NTAPI RtlMapGenericMask(PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping)
_In_ const STRING * Source
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI ULONG NTAPI RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptorRelative(_Out_ PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor, _In_ ULONG Revision)
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInMultiByteString
NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN DaclPresent, _Out_ PACL *Dacl, _Out_ PBOOLEAN DaclDefaulted)
NTSYSAPI NTSTATUS NTAPI RtlGetOwnerSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PSID *Owner, _Out_ PBOOLEAN OwnerDefaulted)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeToOemN(PCHAR OemString, ULONG OemSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
_Inout_opt_ POEM_STRING OemName
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG DaclSize
_In_ ULONG UncompressedBufferSize
NTSYSAPI VOID NTAPI RtlCopyString(_Out_ PSTRING DestinationString, _In_opt_ const STRING *SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualSid(_In_ PSID Sid1, _In_ PSID Sid2)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PCUNICODE_STRING SourceString)
_In_ ULONG _In_ ACCESS_MASK AccessMask
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToOemN(PCHAR OemString, ULONG OemSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PCUNICODE_STRING String1, PCUNICODE_STRING String2, BOOLEAN CaseInsensitive)
NTSYSAPI VOID NTAPI RtlCaptureContext(_Out_ PCONTEXT ContextRecord)
NTSYSAPI BOOLEAN NTAPI RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor)
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInOemString
#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT
NTSYSAPI WCHAR NTAPI RtlDowncaseUnicodeChar(IN WCHAR Source)
NTSYSAPI VOID NTAPI RtlSecondsSince1970ToTime(_In_ ULONG SecondsSince1970, _Out_ PLARGE_INTEGER Time)
NTSYSAPI ULONG NTAPI RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString)
_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
_In_ BOOLEAN _In_opt_ PACL _In_opt_ BOOLEAN DaclDefaulted
*BytesInUnicodeString PWCH _In_ ULONG MaxBytesInUnicodeString
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PCANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeToMultiByteN(PCHAR MbString, ULONG MbSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI NTSTATUS NTAPI RtlCharToInteger(PCSZ String, ULONG Base, PULONG Value)
NTSYSAPI WCHAR NTAPI RtlUpcaseUnicodeChar(WCHAR Source)
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeN(_Out_ PWCH UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH MbString, _In_ ULONG MbSize)