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
37#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && (defined(_M_CEE_PURE) || defined(_M_CEE_SAFE))
38#define NO_KERNEL_LIST_ENTRY_CHECKS
41#if !defined(EXTRA_KERNEL_LIST_ENTRY_CHECKS) && defined(__REACTOS__)
42#define EXTRA_KERNEL_LIST_ENTRY_CHECKS
45#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
47#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x }
54 ListHead->Flink = ListHead->Blink = ListHead;
63 return (
BOOLEAN)(ListHead->Flink == ListHead);
74 OldFlink =
Entry->Flink;
75 OldBlink =
Entry->Blink;
76 OldFlink->
Blink = OldBlink;
77 OldBlink->
Flink = OldFlink;
78 return (
BOOLEAN)(OldFlink == OldBlink);
81#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
114 OldFlink =
Entry->Flink;
115 OldBlink =
Entry->Blink;
116#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
117#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
124 OldFlink->
Blink = OldBlink;
125 OldBlink->
Flink = OldFlink;
126 return (
BOOLEAN)(OldFlink == OldBlink);
137#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
139#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
140 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
144 Entry = ListHead->Flink;
145 Flink =
Entry->Flink;
146#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
150 ListHead->Flink = Flink;
151 Flink->
Blink = ListHead;
163#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
165#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
166 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
170 Entry = ListHead->Blink;
171 Blink =
Entry->Blink;
172#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
176 ListHead->Blink = Blink;
177 Blink->
Flink = ListHead;
188#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
191 OldBlink = ListHead->
Blink;
192 Entry->Flink = ListHead;
193 Entry->Blink = OldBlink;
194#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
195 if (OldBlink->
Flink != ListHead)
199 ListHead->Blink =
Entry;
209#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
212 OldFlink = ListHead->
Flink;
213 Entry->Flink = OldFlink;
214 Entry->Blink = ListHead;
215#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
216 if (OldFlink->
Blink != ListHead)
220 ListHead->Flink =
Entry;
231#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
235 ListHead->Blink->Flink = ListToAppend;
236 ListHead->Blink = ListToAppend->Blink;
237 ListToAppend->Blink->Flink = ListHead;
247 FirstEntry = ListHead->
Next;
248 if (FirstEntry !=
NULL) {
260 Entry->Next = ListHead->Next;
261 ListHead->Next =
Entry;
282#define RtlCopyMemory(Destination, Source, Length) \
283 memcpy(Destination, Source, Length)
285#define RtlCopyBytes RtlCopyMemory
296#define RtlCopyMemoryNonTemporal RtlCopyMemory
304#define RtlEqualLuid(Luid1, Luid2) \
305 (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))
313#define RtlEqualMemory(Destination, Source, Length) \
314 (!memcmp(Destination, Source, Length))
322#define RtlFillMemory(Destination, Length, Fill) \
323 memset(Destination, Fill, Length)
325#define RtlFillBytes RtlFillMemory
365#define RtlMoveMemory(Destination, Source, Length) \
366 memmove(Destination, Source, Length)
383#define RtlZeroMemory(Destination, Length) \
384 memset(Destination, 0, Length)
386#define RtlZeroBytes RtlZeroMemory
389#if (NTDDI_VERSION >= NTDDI_WIN2K)
429#define RtlAnsiStringToUnicodeSize(String) ( \
430 NLS_MB_CODE_PAGE_TAG ? \
431 RtlxAnsiStringToUnicodeSize(String) : \
432 ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
570#if !defined(_AMD64_) && !defined(_IA64_)
587#if defined(_X86_) || defined(_IA64_)
753#define RtlIntPtrToUnicodeString(Value, Base, String) \
754 RtlInt64ToUnicodeString(Value, Base, String)
756#define RtlIntPtrToUnicodeString(Value, Base, String) \
757 RtlIntegerToUnicodeString(Value, Base, String)
764#define RtlIsZeroLuid(_L1) \
765 ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
798#define SHORT_SIZE (sizeof(USHORT))
799#define SHORT_MASK (SHORT_SIZE - 1)
800#define LONG_SIZE (sizeof(LONG))
801#define LONGLONG_SIZE (sizeof(LONGLONG))
802#define LONG_MASK (LONG_SIZE - 1)
803#define LONGLONG_MASK (LONGLONG_SIZE - 1)
804#define LOWBYTE_MASK 0x00FF
806#define FIRSTBYTE(VALUE) ((VALUE) & LOWBYTE_MASK)
807#define SECONDBYTE(VALUE) (((VALUE) >> 8) & LOWBYTE_MASK)
808#define THIRDBYTE(VALUE) (((VALUE) >> 16) & LOWBYTE_MASK)
809#define FOURTHBYTE(VALUE) (((VALUE) >> 24) & LOWBYTE_MASK)
841#if defined(_AMD64_) || defined(_M_AMD64) || defined(_X86) || defined(_M_IX86)
848#define RtlStoreUlong(Address,Value) \
849 *(ULONG UNALIGNED *)(Address) = (Value)
856#define RtlStoreUlonglong(Address,Value) \
857 *(ULONGLONG UNALIGNED *)(Address) = (Value)
864#define RtlStoreUshort(Address,Value) \
865 *(USHORT UNALIGNED *)(Address) = (Value)
872#define RtlRetrieveUshort(DestAddress,SrcAddress) \
873 *(USHORT*)(DestAddress) = *(USHORT UNALIGNED *)(SrcAddress)
880#define RtlRetrieveUlong(DestAddress,SrcAddress) \
881 *(ULONG*)(DestAddress) = *(ULONG UNALIGNED *)(SrcAddress)
885#define RtlStoreUlong(Address,Value) \
886 if ((ULONG_PTR)(Address) & LONG_MASK) { \
887 ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
888 ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \
889 ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \
890 ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \
893 *((PULONG)(Address)) = (ULONG) (Value); \
896#define RtlStoreUlonglong(Address,Value) \
897 if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \
898 RtlStoreUlong((ULONG_PTR)(Address), \
899 (ULONGLONG)(Value) & 0xFFFFFFFF); \
900 RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \
901 (ULONGLONG)(Value) >> 32); \
903 *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \
906#define RtlStoreUshort(Address,Value) \
907 if ((ULONG_PTR)(Address) & SHORT_MASK) { \
908 ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
909 ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \
912 *((PUSHORT) (Address)) = (USHORT)Value; \
915#define RtlRetrieveUshort(DestAddress,SrcAddress) \
916 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
918 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
919 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
923 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
926#define RtlRetrieveUlong(DestAddress,SrcAddress) \
927 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
929 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
930 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
931 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
932 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
936 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
947#define RtlStoreUlongPtr(Address,Value) RtlStoreUlonglong(Address,Value)
949#define RtlStoreUlongPtr(Address,Value) RtlStoreUlong(Address,Value)
1022#define RtlUnicodeStringToAnsiSize(String) ( \
1023 NLS_MB_CODE_PAGE_TAG ? \
1024 RtlxUnicodeStringToAnsiSize(String) : \
1025 ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
1098#ifndef RTL_USE_AVL_TABLES
1193#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8
1284RtlVolumeDeviceToDosName(
1458RtlUnicodeStringToCountedOemString(
1594#if (NTDDI_VERSION >= NTDDI_VISTASP1)
2004#if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
2015#if (NTDDI_VERSION >= NTDDI_WINXP)
2361#if defined(_M_AMD64)
2371 if ((
Length /= 4) != 0) {
2374 if ((
Length -= 1) == 0) {
2385#define RtlFillMemoryUlonglong(Destination, Length, Pattern) \
2386 __stosq((PULONG64)(Destination), Pattern, (Length) / 8)
2412#if (NTDDI_VERSION >= NTDDI_WS03)
2422#if (NTDDI_VERSION >= NTDDI_WS03SP1)
2481#if (NTDDI_VERSION >= NTDDI_VISTA)
2487RtlNumberOfSetBitsUlongPtr(
2653#if (NTDDI_VERSION >= NTDDI_WIN7)
2848#if !defined(MIDL_PASS)
2858 ret.QuadPart = SignedInteger;
2870 ret.QuadPart = UnsignedInteger;
2884 Result.QuadPart = LargeInteger.QuadPart << ShiftCount;
2898 Result.QuadPart = (
ULONG64)LargeInteger.QuadPart >> ShiftCount;
2925 Difference.
QuadPart = -Subtrahend.QuadPart;
2939 Difference.
QuadPart = Minuend.QuadPart - Subtrahend.QuadPart;
2974RtlInitEmptyAnsiString(
2989RtlInitEmptyUnicodeString(
3002#if defined(_AMD64_) || defined(_IA64_)
3014 ret.QuadPart = Multiplicand.QuadPart * Multiplier;
3055#if (NTDDI_VERSION >= NTDDI_WIN2K)
3073#define MultiplyHigh __mulh
3074#define UnsignedMultiplyHigh __umulh
3088 Pos = (Dividend.QuadPart >= 0);
3089 ret64 = UnsignedMultiplyHigh(
Pos ? Dividend.QuadPart : -Dividend.QuadPart,
3090 MagicDivisor.QuadPart);
3091 ret64 >>= ShiftCount;
3116#define RtlLargeIntegerAnd(Result, Source, Mask) \
3117 Result.QuadPart = Source.QuadPart & Mask.QuadPart
3128 ret.QuadPart = LargeInteger.QuadPart >> ShiftCount;
3137#define RtlLargeIntegerEqualTo(X,Y) \
3138 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
3146 volatile char* vptr = (
volatile char*)Pointer;
3147#if defined(_M_AMD64)
3150 char * endptr = (
char *)vptr +
Size;
3151 while (vptr < endptr) {
3158#if defined(_M_AMD64)
3169#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1)
3172#define RtlLargeIntegerGreaterThan(X,Y) ( \
3173 (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
3174 ((X).HighPart > (Y).HighPart) \
3177#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \
3178 (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
3179 ((X).HighPart > (Y).HighPart) \
3182#define RtlLargeIntegerNotEqualTo(X,Y) ( \
3183 (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
3186#define RtlLargeIntegerLessThan(X,Y) ( \
3187 (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
3188 ((X).HighPart < (Y).HighPart) \
3191#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \
3192 (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
3193 ((X).HighPart < (Y).HighPart) \
3196#define RtlLargeIntegerGreaterThanZero(X) ( \
3197 (((X).HighPart == 0) && ((X).LowPart > 0)) || \
3198 ((X).HighPart > 0 ) \
3201#define RtlLargeIntegerGreaterOrEqualToZero(X) ( (X).HighPart >= 0 )
3203#define RtlLargeIntegerEqualToZero(X) ( !((X).LowPart | (X).HighPart) )
3205#define RtlLargeIntegerNotEqualToZero(X) ( ((X).LowPart | (X).HighPart) )
3207#define RtlLargeIntegerLessThanZero(X) ( ((X).HighPart < 0) )
3209#define RtlLargeIntegerLessOrEqualToZero(X) ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) )
3214#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
3215#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
3216#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
3218#if defined(_MSC_VER) && !defined(__clang__)
3219# define __assert_annotationA(msg) __annotation(L"Debug", L"AssertFail", L ## msg)
3220# define __assert_annotationW(msg) __annotation(L"Debug", L"AssertFail", msg)
3222# define __assert_annotationA(msg) \
3223 DbgPrint("Assertion failed at %s(%d): %s\n", __FILE__, __LINE__, msg)
3224# define __assert_annotationW(msg) \
3225 DbgPrint("Assertion failed at %s(%d): %S\n", __FILE__, __LINE__, msg)
3229# define NT_ANALYSIS_ASSUME(_exp) _Analysis_assume_(_exp)
3231# define NT_ANALYSIS_ASSUME(_exp) ((void)0)
3233# define NT_ANALYSIS_ASSUME(_exp) __noop(_exp)
3236#define NT_ASSERT_ACTION(exp) \
3237 (NT_ANALYSIS_ASSUME(exp), \
3239 (__assert_annotationA(#exp), \
3240 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3242#define NT_ASSERTMSG_ACTION(msg, exp) \
3243 (NT_ANALYSIS_ASSUME(exp), \
3245 (__assert_annotationA(msg), \
3246 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3248#define NT_ASSERTMSGW_ACTION(msg, exp) \
3249 (NT_ANALYSIS_ASSUME(exp), \
3251 (__assert_annotationW(msg), \
3252 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3256#define RTL_VERIFY(exp) \
3258 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
3260#define RTL_VERIFYMSG(msg, exp) \
3262 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ), FALSE : TRUE)
3264#define RTL_SOFT_VERIFY(exp) \
3266 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
3268#define RTL_SOFT_VERIFYMSG(msg, exp) \
3270 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
3273#define ASSERT (void)RTL_VERIFY
3274#define ASSERTMSG (void)RTL_VERIFYMSG
3275#define RTL_SOFT_ASSERT (void)RTL_SOFT_VERIFY
3276#define RTL_SOFT_ASSERTMSG (void)RTL_SOFT_VERIFYMSG
3278#define NT_VERIFY NT_ASSERT_ACTION
3279#define NT_VERIFYMSG NT_ASSERTMSG_ACTION
3280#define NT_VERIFYMSGW NT_ASSERTMSGW_ACTION
3282#define NT_ASSERT_ASSUME (void)NT_ASSERT_ACTION
3283#define NT_ASSERTMSG_ASSUME (void)NT_ASSERTMSG_ACTION
3284#define NT_ASSERTMSGW_ASSUME (void)NT_ASSERTMSGW_ACTION
3286#define NT_ASSERT_NOASSUME (void)NT_ASSERT_ACTION
3287#define NT_ASSERTMSG_NOASSUME (void)NT_ASSERTMSG_ACTION
3288#define NT_ASSERTMSGW_NOASSUME (void)NT_ASSERTMSGW_ACTION
3292#define ASSERT(exp) ((void)0)
3293#define ASSERTMSG(msg, exp) ((void)0)
3295#define RTL_SOFT_ASSERT(exp) ((void)0)
3296#define RTL_SOFT_ASSERTMSG(msg, exp) ((void)0)
3298#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
3299#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3301#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
3302#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3304#define NT_VERIFY(exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3305#define NT_VERIFYMSG(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3306#define NT_VERIFYMSGW(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3308#define NT_ASSERT_ASSUME(exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3309#define NT_ASSERTMSG_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3310#define NT_ASSERTMSGW_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3312#define NT_ASSERT_NOASSUME(exp) ((void)0)
3313#define NT_ASSERTMSG_NOASSUME(msg, exp) ((void)0)
3314#define NT_ASSERTMSGW_NOASSUME(msg, exp) ((void)0)
3318#define NT_FRE_ASSERT (void)NT_ASSERT_ACTION
3319#define NT_FRE_ASSERTMSG (void)NT_ASSERTMSG_ACTION
3320#define NT_FRE_ASSERTMSGW (void)NT_ASSERTMSGW_ACTION
3322#ifdef NT_ASSERT_ALWAYS_ASSUMES
3323# define NT_ASSERT NT_ASSERT_ASSUME
3324# define NT_ASSERTMSG NT_ASSERTMSG_ASSUME
3325# define NT_ASSERTMSGW NT_ASSERTMSGW_ASSUME
3327# define NT_ASSERT NT_ASSERT_NOASSUME
3328# define NT_ASSERTMSG NT_ASSERTMSG_NOASSUME
3329# define NT_ASSERTMSGW NT_ASSERTMSGW_NOASSUME
3332#if defined(_MSC_VER) && (defined(__REACTOS__) || defined(ASSERT_ALWAYS_NT_ASSERT)) && !defined(_BLDR_)
3334#define ASSERT NT_ASSERT
3336#define ASSERTMSG NT_ASSERTMSG
3338#define ASSERTMSGW NT_ASSERTMSGW
3340#define RTL_VERIFY NT_VERIFY
3343#define InitializeListHead32(ListHead) (\
3344 (ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead)))
3346#if !defined(_WINBASE_)
3348#if defined(_WIN64) && !defined(_NTSYSTEM_) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || !defined(_NTOSP_))
3372 if (((
ULONG_PTR)SListHead & 0xf) != 0) {
3376 SListHead->Region = (
ULONG_PTR)SListHead & VRN_MASK;
3378 SListHead->Region = 0;
3381 SListHead->Alignment = 0;
3401#define InterlockedFlushSList(SListHead) \
3402 ExInterlockedFlushSList(SListHead)
3406#define InterlockedPushEntrySList(SListHead, SListEntry) \
3407 ExpInterlockedPushEntrySList(SListHead, SListEntry)
3409#define InterlockedPopEntrySList(SListHead) \
3410 ExpInterlockedPopEntrySList(SListHead)
3412#define InterlockedFlushSList(SListHead) \
3413 ExpInterlockedFlushSList(SListHead)
3417#define QueryDepthSList(SListHead) \
3418 ExQueryDepthSList(SListHead)
3422#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk) ((ContextEx)->Chunk.Offset)
3423#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk) ((ContextEx)->Chunk.Length)
3424#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk) \
3425 ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk)))
3426#define RTL_CONTEXT_OFFSET(Context, Chunk) \
3427 RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk)
3428#define RTL_CONTEXT_LENGTH(Context, Chunk) \
3429 RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk)
3430#define RTL_CONTEXT_CHUNK(Context, Chunk) \
3431 RTL_CONTEXT_EX_CHUNK((PCONTEXT_EX)(Context + 1), \
3432 (PCONTEXT_EX)(Context + 1), \
3443#ifndef RtlIsNtDdiVersionAvailable
3444#define RtlIsNtDdiVersionAvailable WdmlibRtlIsNtDdiVersionAvailable
3447#ifndef RtlIsServicePackVersionInstalled
3448#define RtlIsServicePackVersionInstalled WdmlibRtlIsServicePackVersionInstalled
3451#define RtlInterlockedSetBits(Flags, Flag) \
3452 InterlockedOr((PLONG)(Flags), Flag)
3454#define RtlInterlockedAndBits(Flags, Flag) \
3455 InterlockedAnd((PLONG)(Flags), Flag)
3457#define RtlInterlockedClearBits(Flags, Flag) \
3458 RtlInterlockedAndBits(Flags, ~(Flag))
3460#define RtlInterlockedXorBits(Flags, Flag) \
3461 InterlockedXor(Flags, Flag)
3463#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag) \
3464 (VOID) RtlInterlockedSetBits(Flags, Flag)
3466#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag) \
3467 (VOID) RtlInterlockedAndBits(Flags, Flag)
3469#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag) \
3470 RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag))
3476#ifdef RTL_USE_AVL_TABLES
3478#define RtlInitializeGenericTable RtlInitializeGenericTableAvl
3479#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl
3480#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl
3481#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl
3482#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl
3483#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl
3484#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl
3485#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
3486#define RtlGetElementGenericTable RtlGetElementGenericTableAvl
3487#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl
3488#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl
3492#define RtlInitializeSplayLinks(Links) { \
3493 PRTL_SPLAY_LINKS _SplayLinks; \
3494 _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
3495 _SplayLinks->Parent = _SplayLinks; \
3496 _SplayLinks->LeftChild = NULL; \
3497 _SplayLinks->RightChild = NULL; \
3500#define RtlIsLeftChild(Links) \
3501 (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3503#define RtlIsRightChild(Links) \
3504 (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3506#define RtlRightChild(Links) \
3507 ((PRTL_SPLAY_LINKS)(Links))->RightChild
3509#define RtlIsRoot(Links) \
3510 (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
3512#define RtlLeftChild(Links) \
3513 ((PRTL_SPLAY_LINKS)(Links))->LeftChild
3515#define RtlParent(Links) \
3516 ((PRTL_SPLAY_LINKS)(Links))->Parent
3518#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
3520 PRTL_SPLAY_LINKS _SplayParent; \
3521 PRTL_SPLAY_LINKS _SplayChild; \
3522 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3523 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3524 _SplayParent->LeftChild = _SplayChild; \
3525 _SplayChild->Parent = _SplayParent; \
3528#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
3530 PRTL_SPLAY_LINKS _SplayParent; \
3531 PRTL_SPLAY_LINKS _SplayChild; \
3532 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3533 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3534 _SplayParent->RightChild = _SplayChild; \
3535 _SplayChild->Parent = _SplayParent; \
3538#if !defined(MIDL_PASS)
3543RtlConvertLongToLuid(
3570#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
3571#define RtlGetCallersAddress(CallersAddress, CallersCaller) \
3572 *CallersAddress = (PVOID)_ReturnAddress(); \
3573 *CallersCaller = NULL;
3575#if (NTDDI_VERSION >= NTDDI_WIN2K)
3585#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
3587#if (NTDDI_VERSION >= NTDDI_WIN7)
3606 Context->ChainHead = Enumerator->ChainHead;
3607 Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
3672#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
3673#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
3675#define RtlUnicodeStringToOemSize(STRING) (NLS_MB_OEM_CODE_PAGE_TAG ? \
3676 RtlxUnicodeStringToOemSize(STRING) : \
3677 ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
3680#define RtlOemStringToUnicodeSize(STRING) ( \
3681 NLS_MB_OEM_CODE_PAGE_TAG ? \
3682 RtlxOemStringToUnicodeSize(STRING) : \
3683 ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
3686#define RtlOemStringToCountedUnicodeSize(STRING) ( \
3687 (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
3690#define RtlOffsetToPointer(B,O) ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))
3691#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)
#define RtlInitializeBitMap
#define RtlFindNextForwardRunClear
#define RtlFindLastBackwardRunClear
#define RtlFindClearBitsAndSet
#define RtlNumberOfSetBits
#define RtlFindNextForwardRunSet
#define RtlFindLongestRunClear
#define RtlFindFirstRunClear
#define RtlFindSetBitsAndClear
#define RtlNumberOfClearBits
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 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 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 NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG, ULONG, UNICODE_STRING *)
NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING *, const STRING *, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR, PSID, BOOLEAN)
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 NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR)
NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT, PUCHAR, ULONG, PUCHAR, ULONG, PULONG)
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 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)
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)
__fastfail(FAST_FAIL_INVALID_ARG)
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
_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)
_Use_decl_annotations_ NTSTATUS NTAPI RtlOemToUnicodeN(_Out_ PWCHAR UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH OemString, _In_ ULONG OemSize)
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeSize(_Out_ PULONG UnicodeSize, _In_ PCCH MbString, _In_ ULONG MbSize)
#define _In_reads_bytes_(s)
#define _Out_range_(l, h)