ReactOS 0.4.15-dev-7788-g1ad9096
rtlfuncs.h File Reference

Go to the source code of this file.

Macros

#define FAST_FAIL_LEGACY_GS_VIOLATION   0
 
#define FAST_FAIL_VTGUARD_CHECK_FAILURE   1
 
#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE   2
 
#define FAST_FAIL_CORRUPT_LIST_ENTRY   3
 
#define FAST_FAIL_INCORRECT_STACK   4
 
#define FAST_FAIL_INVALID_ARG   5
 
#define FAST_FAIL_GS_COOKIE_INIT   6
 
#define FAST_FAIL_FATAL_APP_EXIT   7
 
#define FAST_FAIL_RANGE_CHECK_FAILURE   8
 
#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS   9
 
#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE   10
 
#define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE   11
 
#define FAST_FAIL_INVALID_FIBER_SWITCH   12
 
#define FAST_FAIL_INVALID_SET_OF_CONTEXT   13
 
#define FAST_FAIL_INVALID_REFERENCE_COUNT   14
 
#define FAST_FAIL_INVALID_JUMP_BUFFER   18
 
#define FAST_FAIL_MRDATA_MODIFIED   19
 
#define FAST_FAIL_INVALID_FAST_FAIL_CODE   0xFFFFFFFF
 
#define RTL_STATIC_LIST_HEAD(x)   LIST_ENTRY x = { &x, &x }
 
#define RtlCopyMemory(Destination, Source, Length)    memcpy(Destination, Source, Length)
 
#define RtlCopyBytes   RtlCopyMemory
 
#define RtlCopyMemoryNonTemporal   RtlCopyMemory
 
#define RtlEqualLuid(Luid1, Luid2)    (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))
 
#define RtlEqualMemory(Destination, Source, Length)    (!memcmp(Destination, Source, Length))
 
#define RtlFillMemory(Destination, Length, Fill)    memset(Destination, Fill, Length)
 
#define RtlFillBytes   RtlFillMemory
 
#define RtlMoveMemory(Destination, Source, Length)    memmove(Destination, Source, Length)
 
#define RtlZeroMemory(Destination, Length)    memset(Destination, 0, Length)
 
#define RtlZeroBytes   RtlZeroMemory
 
#define RtlAnsiStringToUnicodeSize(String)
 
#define RtlIntPtrToUnicodeString(Value, Base, String)    RtlIntegerToUnicodeString(Value, Base, String)
 
#define RtlIsZeroLuid(_L1)    ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
 
#define SHORT_SIZE   (sizeof(USHORT))
 
#define SHORT_MASK   (SHORT_SIZE - 1)
 
#define LONG_SIZE   (sizeof(LONG))
 
#define LONGLONG_SIZE   (sizeof(LONGLONG))
 
#define LONG_MASK   (LONG_SIZE - 1)
 
#define LONGLONG_MASK   (LONGLONG_SIZE - 1)
 
#define LOWBYTE_MASK   0x00FF
 
#define FIRSTBYTE(VALUE)   ((VALUE) & LOWBYTE_MASK)
 
#define SECONDBYTE(VALUE)   (((VALUE) >> 8) & LOWBYTE_MASK)
 
#define THIRDBYTE(VALUE)   (((VALUE) >> 16) & LOWBYTE_MASK)
 
#define FOURTHBYTE(VALUE)   (((VALUE) >> 24) & LOWBYTE_MASK)
 
#define RtlStoreUlong(Address, Value)
 
#define RtlStoreUlonglong(Address, Value)
 
#define RtlStoreUshort(Address, Value)
 
#define RtlRetrieveUshort(DestAddress, SrcAddress)
 
#define RtlRetrieveUlong(DestAddress, SrcAddress)
 
#define RtlStoreUlongPtr(Address, Value)   RtlStoreUlong(Address,Value)
 
#define RtlUnicodeStringToAnsiSize(String)
 
#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT   8
 
#define RtlLargeIntegerAnd(Result, Source, Mask)    Result.QuadPart = Source.QuadPart & Mask.QuadPart
 
#define RtlLargeIntegerEqualTo(X, Y)    (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
 
#define RtlCheckBit(BMH, BP)   (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1)
 
#define RtlLargeIntegerGreaterThan(X, Y)
 
#define RtlLargeIntegerGreaterThanOrEqualTo(X, Y)
 
#define RtlLargeIntegerNotEqualTo(X, Y)
 
#define RtlLargeIntegerLessThan(X, Y)
 
#define RtlLargeIntegerLessThanOrEqualTo(X, Y)
 
#define RtlLargeIntegerGreaterThanZero(X)
 
#define RtlLargeIntegerGreaterOrEqualToZero(X)   ( (X).HighPart >= 0 )
 
#define RtlLargeIntegerEqualToZero(X)   ( !((X).LowPart | (X).HighPart) )
 
#define RtlLargeIntegerNotEqualToZero(X)   ( ((X).LowPart | (X).HighPart) )
 
#define RtlLargeIntegerLessThanZero(X)   ( ((X).HighPart < 0) )
 
#define RtlLargeIntegerLessOrEqualToZero(X)   ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) )
 
#define RtlUshortByteSwap(_x)   _byteswap_ushort((USHORT)(_x))
 
#define RtlUlongByteSwap(_x)   _byteswap_ulong((_x))
 
#define RtlUlonglongByteSwap(_x)   _byteswap_uint64((_x))
 
#define __assert_annotationA(msg)    DbgPrint("Assertion failed at %s(%d): %s\n", __FILE__, __LINE__, msg)
 
#define __assert_annotationW(msg)    DbgPrint("Assertion failed at %s(%d): %S\n", __FILE__, __LINE__, msg)
 
#define NT_ANALYSIS_ASSUME(_exp)   __noop(_exp)
 
#define NT_ASSERT_ACTION(exp)
 
#define NT_ASSERTMSG_ACTION(msg, exp)
 
#define NT_ASSERTMSGW_ACTION(msg, exp)
 
#define ASSERT(exp)   ((void)0)
 
#define ASSERTMSG(msg, exp)   ((void)0)
 
#define RTL_SOFT_ASSERT(exp)   ((void)0)
 
#define RTL_SOFT_ASSERTMSG(msg, exp)   ((void)0)
 
#define RTL_VERIFY(exp)   ((exp) ? TRUE : FALSE)
 
#define RTL_VERIFYMSG(msg, exp)   ((exp) ? TRUE : FALSE)
 
#define RTL_SOFT_VERIFY(exp)   ((exp) ? TRUE : FALSE)
 
#define RTL_SOFT_VERIFYMSG(msg, exp)   ((exp) ? TRUE : FALSE)
 
#define NT_VERIFY(exp)   (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
 
#define NT_VERIFYMSG(msg, exp)   (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
 
#define NT_VERIFYMSGW(msg, exp)   (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
 
#define NT_ASSERT_ASSUME(exp)   (NT_ANALYSIS_ASSUME(exp), (void)0)
 
#define NT_ASSERTMSG_ASSUME(msg, exp)   (NT_ANALYSIS_ASSUME(exp), (void)0)
 
#define NT_ASSERTMSGW_ASSUME(msg, exp)   (NT_ANALYSIS_ASSUME(exp), (void)0)
 
#define NT_ASSERT_NOASSUME(exp)   ((void)0)
 
#define NT_ASSERTMSG_NOASSUME(msg, exp)   ((void)0)
 
#define NT_ASSERTMSGW_NOASSUME(msg, exp)   ((void)0)
 
#define NT_FRE_ASSERT   (void)NT_ASSERT_ACTION
 
#define NT_FRE_ASSERTMSG   (void)NT_ASSERTMSG_ACTION
 
#define NT_FRE_ASSERTMSGW   (void)NT_ASSERTMSGW_ACTION
 
#define NT_ASSERT   NT_ASSERT_NOASSUME
 
#define NT_ASSERTMSG   NT_ASSERTMSG_NOASSUME
 
#define NT_ASSERTMSGW   NT_ASSERTMSGW_NOASSUME
 
#define InitializeListHead32(ListHead)
 
#define InterlockedPushEntrySList(SListHead, SListEntry)    ExpInterlockedPushEntrySList(SListHead, SListEntry)
 
#define InterlockedPopEntrySList(SListHead)    ExpInterlockedPopEntrySList(SListHead)
 
#define InterlockedFlushSList(SListHead)    ExpInterlockedFlushSList(SListHead)
 
#define QueryDepthSList(SListHead)    ExQueryDepthSList(SListHead)
 
#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk)   ((ContextEx)->Chunk.Offset)
 
#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk)   ((ContextEx)->Chunk.Length)
 
#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk)    ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk)))
 
#define RTL_CONTEXT_OFFSET(Context, Chunk)    RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk)
 
#define RTL_CONTEXT_LENGTH(Context, Chunk)    RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk)
 
#define RTL_CONTEXT_CHUNK(Context, Chunk)
 
#define RtlIsNtDdiVersionAvailable   WdmlibRtlIsNtDdiVersionAvailable
 
#define RtlIsServicePackVersionInstalled   WdmlibRtlIsServicePackVersionInstalled
 
#define RtlInterlockedSetBits(Flags, Flag)    InterlockedOr((PLONG)(Flags), Flag)
 
#define RtlInterlockedAndBits(Flags, Flag)    InterlockedAnd((PLONG)(Flags), Flag)
 
#define RtlInterlockedClearBits(Flags, Flag)    RtlInterlockedAndBits(Flags, ~(Flag))
 
#define RtlInterlockedXorBits(Flags, Flag)    InterlockedXor(Flags, Flag)
 
#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag)    (VOID) RtlInterlockedSetBits(Flags, Flag)
 
#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag)    (VOID) RtlInterlockedAndBits(Flags, Flag)
 
#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag)    RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag))
 
#define RtlInitializeSplayLinks(Links)
 
#define RtlIsLeftChild(Links)    (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
 
#define RtlIsRightChild(Links)    (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
 
#define RtlRightChild(Links)    ((PRTL_SPLAY_LINKS)(Links))->RightChild
 
#define RtlIsRoot(Links)    (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
 
#define RtlLeftChild(Links)    ((PRTL_SPLAY_LINKS)(Links))->LeftChild
 
#define RtlParent(Links)    ((PRTL_SPLAY_LINKS)(Links))->Parent
 
#define RtlInsertAsLeftChild(ParentLinks, ChildLinks)
 
#define RtlInsertAsRightChild(ParentLinks, ChildLinks)
 
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE   1
 
#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING   2
 
#define RtlUnicodeStringToOemSize(STRING)
 
#define RtlOemStringToUnicodeSize(STRING)
 
#define RtlOemStringToCountedUnicodeSize(STRING)
 
#define RtlOffsetToPointer(B, O)   ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))
 
#define RtlPointerToOffset(B, P)   ((ULONG)(((PCHAR)(P)) - ((PCHAR)(B))))
 

Functions

 $if (_WDMDDK_) DECLSPEC_NORETURN FORCEINLINE VOID RtlFailFast(_In_ ULONG Code)
 
FORCEINLINE VOID InitializeListHead (_Out_ PLIST_ENTRY ListHead)
 
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty (_In_ const LIST_ENTRY *ListHead)
 
FORCEINLINE BOOLEAN RemoveEntryListUnsafe (_In_ PLIST_ENTRY Entry)
 
FORCEINLINE VOID FatalListEntryError (_In_ PVOID P1, _In_ PVOID P2, _In_ PVOID P3)
 
FORCEINLINE VOID RtlpCheckListEntry (_In_ PLIST_ENTRY Entry)
 
FORCEINLINE BOOLEAN RemoveEntryList (_In_ PLIST_ENTRY Entry)
 
FORCEINLINE PLIST_ENTRY RemoveHeadList (_Inout_ PLIST_ENTRY ListHead)
 
FORCEINLINE PLIST_ENTRY RemoveTailList (_Inout_ PLIST_ENTRY ListHead)
 
FORCEINLINE VOID InsertTailList (_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
 
FORCEINLINE VOID InsertHeadList (_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
 
FORCEINLINE VOID AppendTailList (_Inout_ PLIST_ENTRY ListHead, _Inout_ PLIST_ENTRY ListToAppend)
 
FORCEINLINE PSINGLE_LIST_ENTRY PopEntryList (_Inout_ PSINGLE_LIST_ENTRY ListHead)
 
FORCEINLINE VOID PushEntryList (_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY Entry)
 
__analysis_noreturn NTSYSAPI VOID NTAPI RtlAssert (_In_ PVOID FailedAssertion, _In_ PVOID FileName, _In_ ULONG LineNumber, _In_opt_z_ PSTR Message)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) NTSYSAPI VOID NTAPI RtlFreeUnicodeString(_Inout_ _At_(UnicodeString -> Buffer, __drv_freesMem(Mem)) PUNICODE_STRING UnicodeString)
 Queries information details about a security descriptor.
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) _At_(DestinationString -> Buffer, _Post_equal_to_(SourceString)) _When_(SourceString !=NULL, _At_(DestinationString->Length, _Post_equal_to_(_String_length_(SourceString) *sizeof(WCHAR))) _At_(DestinationString->MaximumLength, _Post_equal_to_(DestinationString->Length+sizeof(WCHAR)))) _When_(SourceString==NULL, _At_(DestinationString->Length, _Post_equal_to_(0)) _At_(DestinationString->MaximumLength, _Post_equal_to_(0))) NTSYSAPI VOID NTAPI RtlInitUnicodeString(_Out_ PUNICODE_STRING DestinationString, _In_opt_z_ __drv_aliasesMem PCWSTR SourceString)
 
_Out_ _At_ (GuidString->Buffer, __drv_allocatesMem(Mem)) PUNICODE_STRING GuidString)
 
 $endif (_WDMDDK_) $if(_WDMDDK_) _Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlAreBitsClear(_In_ PRTL_BITMAP BitMapHeader
 
_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlAreBitsSet (_In_ PRTL_BITMAP BitMapHeader, _In_ ULONG StartingIndex, _In_ ULONG Length)
 
_Out_ _At_ (DestinationString->Buffer, __drv_allocatesMem(Mem))) _When_(!AllocateDestinationString
 
 _Success_ (1) _Unchanged_(Destination -> MaximumLength) _Unchanged_(Destination->Buffer) _When_(_Old_(Destination->Length)+Source->Length<=Destination->MaximumLength, _At_(Destination->Length, _Post_equal_to_(_Old_(Destination->Length)+Source->Length)) _At_(return, _Out_range_(==, 0))) _When_(_Old_(Destination->Length)+Source->Length > Destination->MaximumLength, _Unchanged_(Destination->Length) _At_(return, _Out_range_(<, 0))) NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(_Inout_ PUNICODE_STRING Destination, _In_ PCUNICODE_STRING Source)
 
NTSYSAPI VOID NTAPI RtlClearAllBits (_In_ PRTL_BITMAP BitMapHeader)
 
NTSYSAPI VOID NTAPI RtlClearBits (_In_ PRTL_BITMAP BitMapHeader, _In_range_(0, BitMapHeader->SizeOfBitMap - NumberToClear) ULONG StartingIndex, _In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG NumberToClear)
 
_Must_inspect_result_ NTSYSAPI SIZE_T NTAPI RtlCompareMemory (_In_ const VOID *Source1, _In_ const VOID *Source2, _In_ SIZE_T Length)
 
_In_ SIZE_T _In_reads_ (String2Length) PCWCH String2
 
 _Unchanged_ (DestinationString->Buffer) _Unchanged_(DestinationString -> MaximumLength) _At_(DestinationString->Length, _When_(SourceString->Length > DestinationString->MaximumLength, _Post_equal_to_(DestinationString->MaximumLength)) _When_(SourceString->Length<=DestinationString->MaximumLength, _Post_equal_to_(SourceString->Length))) NTSYSAPI VOID NTAPI RtlCopyUnicodeString(_Inout_ PUNICODE_STRING DestinationString, _In_opt_ PCUNICODE_STRING SourceString)
 
 _IRQL_requires_max_ (APC_LEVEL) NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor
 
NTSYSAPI LARGE_INTEGER NTAPI RtlExtendedIntegerMultiply (_In_ LARGE_INTEGER Multiplicand, _In_ LONG Multiplier)
 
NTSYSAPI LARGE_INTEGER NTAPI RtlExtendedLargeIntegerDivide (_In_ LARGE_INTEGER Dividend, _In_ ULONG Divisor, _Out_opt_ PULONG Remainder)
 
 _Success_ (return !=-1) _Must_inspect_result_ NTSYSAPI ULONG NTAPI RtlFindClearBits(_In_ PRTL_BITMAP BitMapHeader
 
NTSYSAPI ULONG NTAPI RtlFindFirstRunClear (_In_ PRTL_BITMAP BitMapHeader, _Out_ PULONG StartingIndex)
 
NTSYSAPI ULONG NTAPI RtlFindClearRuns (_In_ PRTL_BITMAP BitMapHeader, _Out_writes_to_(SizeOfRunArray, return) PRTL_BITMAP_RUN RunArray, _In_range_(>, 0) ULONG SizeOfRunArray, _In_ BOOLEAN LocateLongestRuns)
 
NTSYSAPI ULONG NTAPI RtlFindLastBackwardRunClear (_In_ PRTL_BITMAP BitMapHeader, _In_ ULONG FromIndex, _Out_ PULONG StartingRunIndex)
 
NTSYSAPI ULONG NTAPI RtlFindLongestRunClear (_In_ PRTL_BITMAP BitMapHeader, _Out_ PULONG StartingIndex)
 
NTSYSAPI ULONG NTAPI RtlFindNextForwardRunClear (_In_ PRTL_BITMAP BitMapHeader, _In_ ULONG FromIndex, _Out_ PULONG StartingRunIndex)
 
 _At_ (BitMapHeader->SizeOfBitMap, _Post_equal_to_(SizeOfBitMap)) _At_(BitMapHeader -> Buffer, _Post_equal_to_(BitMapBuffer)) NTSYSAPI VOID NTAPI RtlInitializeBitMap(_Out_ PRTL_BITMAP BitMapHeader, _In_opt_ __drv_aliasesMem PULONG BitMapBuffer, _In_opt_ ULONG SizeOfBitMap)
 
NTSYSAPI ULONG NTAPI RtlNumberOfClearBits (_In_ PRTL_BITMAP BitMapHeader)
 
NTSYSAPI ULONG NTAPI RtlNumberOfSetBits (_In_ PRTL_BITMAP BitMapHeader)
 
NTSYSAPI VOID NTAPI RtlSetAllBits (_In_ PRTL_BITMAP BitMapHeader)
 
NTSYSAPI VOID NTAPI RtlSetBits (_In_ PRTL_BITMAP BitMapHeader, _In_range_(0, BitMapHeader->SizeOfBitMap - NumberToSet) ULONG StartingIndex, _In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG NumberToSet)
 
NTSYSAPI VOID NTAPI RtlTimeToTimeFields (_In_ PLARGE_INTEGER Time, _Out_ PTIME_FIELDS TimeFields)
 
NTSYSAPI USHORT FASTCALL RtlUshortByteSwap (_In_ USHORT Source)
 
NTSYSAPI ULONG FASTCALL RtlUlongByteSwap (_In_ ULONG Source)
 
NTSYSAPI ULONGLONG FASTCALL RtlUlonglongByteSwap (_In_ ULONGLONG Source)
 
 _When_ (AllocateDestinationString, _At_(DestinationString->MaximumLength, _Out_range_(<=,(SourceString->MaximumLength/sizeof(WCHAR))))) _When_(!AllocateDestinationString
 
 _At_ (DestinationString->Buffer, _Const_) _At_(DestinationString -> MaximumLength, _Const_)) _IRQL_requires_max_(PASSIVE_LEVEL) _When_(AllocateDestinationString, _Must_inspect_result_) NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(_When_(AllocateDestinationString, _Out_ _At_(DestinationString->Buffer, __drv_allocatesMem(Mem))) _When_(!AllocateDestinationString, _Inout_) PANSI_STRING DestinationString, _In_ PCUNICODE_STRING SourceString, _In_ BOOLEAN AllocateDestinationString)
 
_In_ PCWSTR _In_z_ PCWSTR _In_ ULONG _In_reads_bytes_opt_ (ValueLength) PVOID ValueData
 
NTSYSAPI PVOID NTAPI RtlInsertElementGenericTable (_In_ PRTL_GENERIC_TABLE Table, _In_reads_bytes_(BufferSize) PVOID Buffer, _In_ CLONG BufferSize, _Out_opt_ PBOOLEAN NewElement)
 
NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableFull (_In_ PRTL_GENERIC_TABLE Table, _In_reads_bytes_(BufferSize) PVOID Buffer, _In_ CLONG BufferSize, _Out_opt_ PBOOLEAN NewElement, _In_ PVOID NodeOrParent, _In_ TABLE_SEARCH_RESULT SearchResult)
 
NTSYSAPI BOOLEAN NTAPI RtlDeleteElementGenericTable (_In_ PRTL_GENERIC_TABLE Table, _In_ PVOID Buffer)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlLookupElementGenericTable (_In_ PRTL_GENERIC_TABLE Table, _In_ PVOID Buffer)
 
NTSYSAPI PVOID NTAPI RtlLookupElementGenericTableFull (_In_ PRTL_GENERIC_TABLE Table, _In_ PVOID Buffer, _Out_ PVOID *NodeOrParent, _Out_ TABLE_SEARCH_RESULT *SearchResult)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTable (_In_ PRTL_GENERIC_TABLE Table, _In_ BOOLEAN Restart)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableWithoutSplaying (_In_ PRTL_GENERIC_TABLE Table, _Inout_ PVOID *RestartKey)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlGetElementGenericTable (_In_ PRTL_GENERIC_TABLE Table, _In_ ULONG I)
 
NTSYSAPI ULONG NTAPI RtlNumberGenericTableElements (_In_ PRTL_GENERIC_TABLE Table)
 
_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlIsGenericTableEmpty (_In_ PRTL_GENERIC_TABLE Table)
 
NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlSplay (_Inout_ PRTL_SPLAY_LINKS Links)
 
NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlDelete (_In_ PRTL_SPLAY_LINKS Links)
 
NTSYSAPI VOID NTAPI RtlDeleteNoSplay (_In_ PRTL_SPLAY_LINKS Links, _Inout_ PRTL_SPLAY_LINKS *Root)
 
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlSubtreeSuccessor (_In_ PRTL_SPLAY_LINKS Links)
 
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlSubtreePredecessor (_In_ PRTL_SPLAY_LINKS Links)
 
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlRealSuccessor (_In_ PRTL_SPLAY_LINKS Links)
 
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlRealPredecessor (_In_ PRTL_SPLAY_LINKS Links)
 
_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 VOID NTAPI RtlCopyString (_Out_ PSTRING DestinationString, _In_opt_ const STRING *SourceString)
 
NTSYSAPI ULONG NTAPI RtlWalkFrameChain (_Out_writes_(Count -(Flags > > RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT)) PVOID *Callers, _In_ ULONG Count, _In_ ULONG Flags)
 
 $endif (_NTDDK_) $if(_NTIFS_) _Must_inspect_result_ _Ret_maybenull_ _Post_writable_byte_size_(Size) NTSYSAPI PVOID NTAPI RtlAllocateHeap(_In_ HANDLE HeapHandle
 
NTSYSAPI VOID NTAPI RtlCaptureContext (_Out_ PCONTEXT ContextRecord)
 
 _Ret_range_ (<, MAXLONG) NTSYSAPI ULONG NTAPI RtlRandom(_Inout_ PULONG Seed)
 
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlDowncaseUnicodeString (_When_(AllocateDestinationString, _Out_ _At_(UniDest->Buffer, __drv_allocatesMem(Mem))) _When_(!AllocateDestinationString, _Inout_) PUNICODE_STRING UniDest, _In_ PCUNICODE_STRING UniSource, _In_ BOOLEAN AllocateDestinationString)
 
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_reads_bytes_ (BytesInMultiByteString) const CHAR *MultiByteString
 
 _In_reads_bytes_ (BytesInUnicodeString) PCWCH UnicodeString
 
*BytesInUnicodeString PWSTR _In_ ULONG _Out_opt_ PULONG _In_reads_bytes_ (BytesInOemString) PCCH OemString
 
_Must_inspect_result_ NTSYSAPI SIZE_T NTAPI RtlCompareMemoryUlong (_In_reads_bytes_(Length) PVOID Source, _In_ SIZE_T Length, _In_ ULONG Pattern)
 
NTSYSAPI VOID NTAPI RtlSecondsSince1980ToTime (_In_ ULONG ElapsedSeconds, _Out_ PLARGE_INTEGER Time)
 
NTSYSAPI VOID NTAPI RtlSecondsSince1970ToTime (_In_ ULONG ElapsedSeconds, _Out_ PLARGE_INTEGER Time)
 
_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlEqualSid (_In_ PSID Sid1, _In_ PSID Sid2)
 
NTSYSAPI PVOID NTAPI RtlFreeSid (_In_ _Post_invalid_ PSID Sid)
 
_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 PULONG NTAPI RtlSubAuthoritySid (_In_ PSID Sid, _In_ ULONG SubAuthority)
 
 _Post_satisfies_ (return >=8 &&return<=SECURITY_MAX_SID_SIZE) NTSYSAPI ULONG NTAPI RtlLengthSid(_In_ PSID Sid)
 
 _Out_writes_bytes_ (DestinationSidLength) PSID DestinationSid
 
_In_ ULONG _In_ ULONG _In_reads_bytes_ (AceListLength) PVOID AceList
 
NTSYSAPI NTSTATUS NTAPI RtlGetAce (_In_ PACL Acl, _In_ ULONG AceIndex, _Outptr_ PVOID *Ace)
 
NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor (_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN DaclPresent, _Out_ PACL *Dacl, _Out_ PBOOLEAN DaclDefaulted)
 
 _Out_range_ (>, 0)) _When_(Status >=0
 
 _Out_writes_bytes_to_ (MaxBytesInUnicodeString, *BytesInUnicodeString) PWCH UnicodeString
 
_In_ ULONG _Out_opt_ PULONG _In_reads_bytes_ (BytesInCustomCPString) PCH CustomCPString
 
 _Out_writes_bytes_to_ (MaxBytesInCustomCPString, *BytesInCustomCPString) PCH CustomCPString
 
 $endif (_NTIFS_) $if(_WDMDDK_) NTSYSAPI VOID FASTCALL RtlPrefetchMemoryNonTemporal(_In_ PVOID Source
 
 _In_range_ (<, BitMapHeader->SizeOfBitMap) ULONG BitNumber)
 
NTSYSAPI VOID NTAPI RtlSetBit (_In_ PRTL_BITMAP BitMapHeader, _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber)
 
_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlTestBit (_In_ PRTL_BITMAP BitMapHeader, _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber)
 
NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_reads_bytes_(BufferSize) PVOID Buffer, _In_ CLONG BufferSize, _Out_opt_ PBOOLEAN NewElement)
 
NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableFullAvl (_In_ PRTL_AVL_TABLE Table, _In_reads_bytes_(BufferSize) PVOID Buffer, _In_ CLONG BufferSize, _Out_opt_ PBOOLEAN NewElement, _In_ PVOID NodeOrParent, _In_ TABLE_SEARCH_RESULT SearchResult)
 
NTSYSAPI BOOLEAN NTAPI RtlDeleteElementGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_ PVOID Buffer)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlLookupElementGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_ PVOID Buffer)
 
NTSYSAPI PVOID NTAPI RtlLookupElementGenericTableFullAvl (_In_ PRTL_AVL_TABLE Table, _In_ PVOID Buffer, _Out_ PVOID *NodeOrParent, _Out_ TABLE_SEARCH_RESULT *SearchResult)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_ BOOLEAN Restart)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableWithoutSplayingAvl (_In_ PRTL_AVL_TABLE Table, _Inout_ PVOID *RestartKey)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlLookupFirstMatchingElementGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_ PVOID Buffer, _Out_ PVOID *RestartKey)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableLikeADirectory (_In_ PRTL_AVL_TABLE Table, _In_opt_ PRTL_AVL_MATCH_FUNCTION MatchFunction, _In_opt_ PVOID MatchData, _In_ ULONG NextFlag, _Inout_ PVOID *RestartKey, _Inout_ PULONG DeleteCount, _In_ PVOID Buffer)
 
_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlGetElementGenericTableAvl (_In_ PRTL_AVL_TABLE Table, _In_ ULONG I)
 
NTSYSAPI ULONG NTAPI RtlNumberGenericTableElementsAvl (_In_ PRTL_AVL_TABLE Table)
 
_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlIsGenericTableEmptyAvl (_In_ PRTL_AVL_TABLE Table)
 
NTSYSAPI PVOID NTAPI RtlDestroyHeap (_In_ _Post_invalid_ PVOID HeapHandle)
 
NTSYSAPI USHORT NTAPI RtlCaptureStackBackTrace (_In_ ULONG FramesToSkip, _In_ ULONG FramesToCapture, _Out_writes_to_(FramesToCapture, return) PVOID *BackTrace, _Out_opt_ PULONG BackTraceHash)
 
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString (_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
 
NTSYSAPI NTSTATUS NTAPI RtlGetCompressionWorkSpaceSize (_In_ USHORT CompressionFormatAndEngine, _Out_ PULONG CompressBufferWorkSpaceSize, _Out_ PULONG CompressFragmentWorkSpaceSize)
 
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)
 
 _Out_writes_bytes_to_ (UncompressedBufferSize, *FinalUncompressedSize) PUCHAR UncompressedBuffer
 
_In_ ULONG _In_reads_bytes_ (CompressedBufferSize) PUCHAR CompressedBuffer
 
 _Out_writes_bytes_to_ (UncompressedFragmentSize, *FinalUncompressedSize) PUCHAR UncompressedFragment
 
_In_ ULONG _In_ ULONG _In_range_ (<, CompressedBufferSize) ULONG FragmentOffset
 
_In_ ULONG _In_ ULONG _In_reads_bytes_ (CompressedTailSize) PUCHAR CompressedTail
 
_In_ ULONG _Out_writes_bytes_ (CompressedBufferSize) PUCHAR CompressedBuffer
 
_In_ ULONG _In_range_ (>=,(UncompressedBufferSize -(UncompressedBufferSize/16))) ULONG CompressedBufferSize
 
_In_ ULONG _Inout_updates_bytes_ (CompressedDataInfoLength) PCOMPRESSED_DATA_INFO CompressedDataInfo
 
_In_ ULONG _In_range_ (>, sizeof(COMPRESSED_DATA_INFO)) ULONG CompressedDataInfoLength
 
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid (_In_ PSID Sid)
 
 _When_ (Status< 0, _Out_range_(>, 0)) _When_(Status >=0
 
NTSYSAPI VOID NTAPI RtlFillMemoryUlong (_Out_writes_bytes_all_(Length) PVOID Destination, _In_ SIZE_T Length, _In_ ULONG Pattern)
 
NTSYSAPI VOID NTAPI RtlFillMemoryUlonglong (_Out_writes_bytes_all_(Length) PVOID Destination, _In_ SIZE_T Length, _In_ ULONGLONG Pattern)
 
NTSYSAPI ULONGLONG NTAPI RtlIoDecodeMemIoResource (_In_ struct _IO_RESOURCE_DESCRIPTOR *Descriptor, _Out_opt_ PULONGLONG Alignment, _Out_opt_ PULONGLONG MinimumAddress, _Out_opt_ PULONGLONG MaximumAddress)
 
NTSYSAPI NTSTATUS NTAPI RtlIoEncodeMemIoResource (_In_ struct _IO_RESOURCE_DESCRIPTOR *Descriptor, _In_ UCHAR Type, _In_ ULONGLONG Length, _In_ ULONGLONG Alignment, _In_ ULONGLONG MinimumAddress, _In_ ULONGLONG MaximumAddress)
 
NTSYSAPI ULONGLONG NTAPI RtlCmDecodeMemIoResource (_In_ struct _CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor, _Out_opt_ PULONGLONG Start)
 
NTSYSAPI NTSTATUS NTAPI RtlFindClosestEncodableLength (_In_ ULONGLONG SourceLength, _Out_ PULONGLONG TargetLength)
 
NTSYSAPI NTSTATUS NTAPI RtlCmEncodeMemIoResource (_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, _In_ UCHAR Type, _In_ ULONGLONG Length, _In_ ULONGLONG Start)
 
NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo (_In_ ULONG OSMajorVersion, _In_ ULONG OSMinorVersion, _In_ ULONG SpMajorVersion, _In_ ULONG SpMinorVersion, _Out_ PULONG ReturnedProductType)
 
NTSYSAPI NTSTATUS NTAPI RtlIsNormalizedString (_In_ ULONG NormForm, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_ PBOOLEAN Normalized)
 
NTSYSAPI NTSTATUS NTAPI RtlIdnToAscii (_In_ ULONG Flags, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_writes_to_(*DestinationStringLength, *DestinationStringLength) PWSTR DestinationString, _Inout_ PLONG DestinationStringLength)
 
NTSYSAPI NTSTATUS NTAPI RtlIdnToUnicode (IN ULONG Flags, IN PCWSTR SourceString, IN LONG SourceStringLength, OUT PWSTR DestinationString, IN OUT PLONG DestinationStringLength)
 
NTSYSAPI NTSTATUS NTAPI RtlIdnToNameprepUnicode (_In_ ULONG Flags, _In_ PCWSTR SourceString, _In_ LONG SourceStringLength, _Out_writes_to_(*DestinationStringLength, *DestinationStringLength) PWSTR DestinationString, _Inout_ PLONG DestinationStringLength)
 
NTSYSAPI NTSTATUS NTAPI RtlCreateServiceSid (_In_ PUNICODE_STRING ServiceName, _Out_writes_bytes_opt_(*ServiceSidLength) PSID ServiceSid, _Inout_ PULONG ServiceSidLength)
 
NTSYSAPI LONG NTAPI RtlCompareAltitudes (_In_ PCUNICODE_STRING Altitude1, _In_ PCUNICODE_STRING Altitude2)
 
*UTF8StringActualByteCount PCHAR _In_ ULONG _Out_ PULONG _In_reads_bytes_ (UnicodeStringByteCount) PCWCH UnicodeStringSource
 
*UnicodeStringActualByteCount PWSTR _In_ ULONG _Out_ PULONG _In_reads_bytes_ (UTF8StringByteCount) PCCH UTF8StringSource
 
NTSYSAPI ULONG64 NTAPI RtlGetEnabledExtendedFeatures (IN ULONG64 FeatureMask)
 
 __drv_allocatesMem (Mem)) PRTL_DYNAMIC_HASH_TABLE *HashTable
 
NTSYSAPI VOID NTAPI RtlDeleteHashTable (_In_ _When_((HashTable->Flags &RTL_HASH_ALLOCATED_HEADER), __drv_freesMem(Mem) _Post_invalid_) PRTL_DYNAMIC_HASH_TABLE HashTable)
 
NTSYSAPI BOOLEAN NTAPI RtlInsertEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _In_ __drv_aliasesMem PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, _In_ ULONG_PTR Signature, _Inout_opt_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
NTSYSAPI BOOLEAN NTAPI RtlRemoveEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _In_ PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry, _Inout_opt_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
_Must_inspect_result_ NTSYSAPI PRTL_DYNAMIC_HASH_TABLE_ENTRY NTAPI RtlLookupEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _In_ ULONG_PTR Signature, _Out_opt_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
_Must_inspect_result_ NTSYSAPI PRTL_DYNAMIC_HASH_TABLE_ENTRY NTAPI RtlGetNextEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _In_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
NTSYSAPI BOOLEAN NTAPI RtlInitEnumerationHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Out_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
_Must_inspect_result_ NTSYSAPI PRTL_DYNAMIC_HASH_TABLE_ENTRY NTAPI RtlEnumerateEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
NTSYSAPI VOID NTAPI RtlEndEnumerationHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
NTSYSAPI BOOLEAN NTAPI RtlInitWeakEnumerationHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Out_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
_Must_inspect_result_ NTSYSAPI PRTL_DYNAMIC_HASH_TABLE_ENTRY NTAPI RtlWeaklyEnumerateEntryHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
NTSYSAPI VOID NTAPI RtlEndWeakEnumerationHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable, _Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
NTSYSAPI BOOLEAN NTAPI RtlExpandHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
NTSYSAPI BOOLEAN NTAPI RtlContractHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
NTSYSAPI NTSTATUS NTAPI RtlCreateVirtualAccountSid (_In_ PCUNICODE_STRING Name, _In_ ULONG BaseSubAuthority, _Out_writes_bytes_(*SidLength) PSID Sid, _Inout_ PULONG SidLength)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlConvertUlongToLargeInteger (_In_ ULONG UnsignedInteger)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerShiftLeft (_In_ LARGE_INTEGER LargeInteger, _In_ CCHAR ShiftCount)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerShiftRight (_In_ LARGE_INTEGER LargeInteger, _In_ CCHAR ShiftCount)
 
static __inline ULONG NTAPI_INLINE RtlEnlargedUnsignedDivide (_In_ ULARGE_INTEGER Dividend, _In_ ULONG Divisor, _Out_opt_ PULONG Remainder)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerNegate (_In_ LARGE_INTEGER Subtrahend)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerSubtract (_In_ LARGE_INTEGER Minuend, _In_ LARGE_INTEGER Subtrahend)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlEnlargedUnsignedMultiply (_In_ ULONG Multiplicand, _In_ ULONG Multiplier)
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlEnlargedIntegerMultiply (_In_ LONG Multiplicand, _In_ LONG Multiplier)
 
 _At_ (AnsiString->Buffer, _Post_equal_to_(Buffer)) _At_(AnsiString -> Length, _Post_equal_to_(0)) _At_(AnsiString->MaximumLength, _Post_equal_to_(BufferSize)) FORCEINLINE VOID RtlInitEmptyAnsiString(_Out_ PANSI_STRING AnsiString, _Pre_maybenull_ _Pre_readable_size_(BufferSize) __drv_aliasesMem PCHAR Buffer, _In_ USHORT BufferSize)
 
 _At_ (UnicodeString->Buffer, _Post_equal_to_(Buffer)) _At_(UnicodeString -> Length, _Post_equal_to_(0)) _At_(UnicodeString->MaximumLength, _Post_equal_to_(BufferSize)) FORCEINLINE VOID RtlInitEmptyUnicodeString(_Out_ PUNICODE_STRING UnicodeString, _Writable_bytes_(BufferSize) _When_(BufferSize !=0
 
static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerArithmeticShift (_In_ LARGE_INTEGER LargeInteger, _In_ CCHAR ShiftCount)
 
FORCEINLINE PVOID RtlSecureZeroMemory (_Out_writes_bytes_all_(Size) PVOID Pointer, _In_ SIZE_T Size)
 
FORCEINLINE VOID InitializeSListHead (_Out_ PSLIST_HEADER SListHead)
 
BOOLEAN RTLVERLIB_DDI() RtlIsNtDdiVersionAvailable (_In_ ULONG Version)
 
BOOLEAN RTLVERLIB_DDI() RtlIsServicePackVersionInstalled (_In_ ULONG Version)
 
FORCEINLINE LUID NTAPI_INLINE RtlConvertUlongToLuid (_In_ ULONG Val)
 
NTSYSAPI VOID NTAPI RtlGetCallersAddress (_Out_ PVOID *CallersAddress, _Out_ PVOID *CallersCaller)
 
FORCEINLINE VOID NTAPI RtlInitHashTableContext (_Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
FORCEINLINE VOID NTAPI RtlInitHashTableContextFromEnumerator (_Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context, _In_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
 
FORCEINLINE VOID NTAPI RtlReleaseHashTableContext (_Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
 
FORCEINLINE ULONG NTAPI RtlTotalBucketsHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
FORCEINLINE ULONG NTAPI RtlNonEmptyBucketsHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
FORCEINLINE ULONG NTAPI RtlEmptyBucketsHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
FORCEINLINE ULONG NTAPI RtlTotalEntriesHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 
FORCEINLINE ULONG NTAPI RtlActiveEnumeratorsHashTable (_In_ PRTL_DYNAMIC_HASH_TABLE HashTable)
 

Variables

_Out_ GUIDGuid
 
_In_ ULONG StartingIndex
 
_In_ ULONG _In_ ULONG Length
 
_Out_ _Inout_ PUNICODE_STRING DestinationString
 
_Out_ _Inout_ PUNICODE_STRING _In_ PANSI_STRING SourceString
 
_Out_ _Inout_ PUNICODE_STRING _In_ PANSI_STRING _In_ BOOLEAN AllocateDestinationString
 
_In_ PWSTR Path
 
_In_ PCUNICODE_STRING String2
 
_In_ PCUNICODE_STRING _In_ BOOLEAN CaseInSensitive
 
_In_ SIZE_T String1Length
 
_In_ SIZE_T _In_ SIZE_T String2Length
 
_In_ ULONG Revision
 
_In_ PCWSTR _In_z_ PCWSTR ValueName
 
_In_ ULONG NumberToFind
 
_In_ ULONG _In_ ULONG HintIndex
 
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
 
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
 
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE _In_opt_ PVOID Context
 
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE _In_opt_ PVOID _In_opt_ PVOID Environment
 
_In_ BOOLEAN DaclPresent
 
_In_ BOOLEAN _In_opt_ PACL Dacl
 
_In_ BOOLEAN _In_opt_ PACL _In_opt_ BOOLEAN DaclDefaulted
 
_Out_ PLARGE_INTEGER Time
 
_In_opt_ ULONG Base
 
_In_opt_ ULONG _Out_ PULONG Value
 
_In_ ULONG SecurityDescriptorLength
 
_In_ ULONG _In_ SECURITY_INFORMATION RequiredInformation
 
_In_ ULONG TypeMask
 
_In_ ULONG _In_ ULONGLONG ConditionMask
 
_In_ PCWSTR _In_z_ PCWSTR _In_ ULONG ValueType
 
_In_ PCWSTR _In_z_ PCWSTR _In_ ULONG _In_ ULONG ValueLength
 
_In_ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
 
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
 
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE _In_ PRTL_GENERIC_FREE_ROUTINE FreeRoutine
 
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE _In_ PRTL_GENERIC_FREE_ROUTINE _In_opt_ PVOID TableContext
 
_In_ PGENERIC_MAPPING GenericMapping
 
_Out_ PUNICODE_STRING DosName
 
_In_opt_ ULONG Flags
 
_In_opt_ ULONG _In_ SIZE_T Size
 
_In_opt_ ULONG _In_ _Post_invalid_ PVOID BaseAddress
 
_In_ const STRING _In_ BOOLEAN CaseInsensitive
 
_In_ const STRINGSource
 
*BytesInUnicodeString PWCH UnicodeString
 
*BytesInUnicodeString PWCH _In_ ULONG MaxBytesInUnicodeString
 
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG BytesInUnicodeString
 
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInMultiByteString
 
*BytesInMultiByteString PCHAR MultiByteString
 
*BytesInMultiByteString PCHAR _In_ ULONG MaxBytesInMultiByteString
 
*BytesInUnicodeString PWSTR _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInOemString
 
*BytesInOemString PCHAR OemString
 
*BytesInOemString PCHAR _In_ ULONG MaxBytesInOemString
 
_In_ BOOLEAN AllowExtendedCharacters
 
_In_ BOOLEAN _Inout_ PGENERATE_NAME_CONTEXT _Inout_ PUNICODE_STRING Name8dot3
 
_Inout_opt_ POEM_STRING OemName
 
_Inout_opt_ POEM_STRING _Out_opt_ PBOOLEAN NameContainsSpaces
 
_In_ __drv_aliasesMem PSTRING Prefix
 
_In_ __drv_aliasesMem PSTRING _Out_ PPREFIX_TABLE_ENTRY PrefixTableEntry
 
_In_ PSTRING FullName
 
_In_ PUNICODE_STRING _In_ ULONG CaseInsensitiveIndex
 
_In_ BOOLEAN Restart
 
_Out_ PULONG ElapsedSeconds
 
_In_ PSID Sid2
 
_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
 
_In_ PSID_IDENTIFIER_AUTHORITY _In_ UCHAR SubAuthorityCount
 
_In_ PSID SourceSid
 
_In_ PSID Sid
 
_In_ PLUID SourceLuid
 
_In_ ULONG AclLength
 
_In_ ULONG _In_ ULONG AclRevision
 
_In_ ULONG AceRevision
 
_In_ ULONG _In_ ULONG StartingAceIndex
 
_In_ ULONG _In_ ULONG _In_ ULONG AceListLength
 
_In_ ULONG AceIndex
 
_In_ ULONG _In_ ACCESS_MASK AccessMask
 
_In_ ULONG _In_ ULONG AceFlags
 
_In_opt_ PSID Owner
 
_In_opt_ PSID _In_opt_ BOOLEAN OwnerDefaulted
 
_In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInCustomCPString
 
_In_ ULONG MaxBytesInCustomCPString
 
_Out_ PCPTABLEINFO CodePageTable
 
_In_ BOOLEAN _In_ ULONG HashAlgorithm
 
_In_ BOOLEAN _In_ ULONG _Out_ PULONG HashValue
 
_In_opt_ PVOID HeapBase
 
_In_opt_ PVOID _In_opt_ SIZE_T ReserveSize
 
_In_opt_ PVOID _In_opt_ SIZE_T _In_opt_ SIZE_T CommitSize
 
_In_opt_ PVOID _In_opt_ SIZE_T _In_opt_ SIZE_T _In_opt_ PVOID Lock
 
_In_opt_ PVOID _In_opt_ SIZE_T _In_opt_ SIZE_T _In_opt_ PVOID _In_opt_ PRTL_HEAP_PARAMETERS Parameters
 
_In_ ULONG UncompressedBufferSize
 
_In_ ULONG _In_ ULONG CompressedBufferSize
 
_In_ ULONG _In_ ULONG _Out_ PULONG FinalUncompressedSize
 
_In_ ULONG UncompressedFragmentSize
 
_In_ ULONG _In_ ULONG _Out_ PULONG _In_ PVOID WorkSpace
 
_Inout_ PUCHARCompressedBuffer
 
_Inout_ PUCHAR _In_ PUCHAR EndOfCompressedBufferPlus1
 
_Inout_ PUCHAR _In_ PUCHAR _Out_ PUCHARChunkBuffer
 
_Inout_ PUCHAR _In_ PUCHAR _Out_ PUCHAR _Out_ PULONG ChunkSize
 
_In_ ULONG _In_ ULONG _In_ ULONG CompressedTailSize
 
_In_ ULONG _In_ ULONG _In_ ULONG _In_ PCOMPRESSED_DATA_INFO CompressedDataInfo
 
_Out_ PBOOLEAN SaclPresent
 
_Out_ PBOOLEAN _Out_ PACLSacl
 
_Out_ PBOOLEAN _Out_ PACL _Out_ PBOOLEAN SaclDefaulted
 
_In_opt_ PSID Group
 
_In_opt_ PSID _In_opt_ BOOLEAN GroupDefaulted
 
_Out_writes_bytes_to_opt_ BufferLength PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
 
_Out_writes_bytes_to_opt_ BufferLength PSECURITY_DESCRIPTOR _Inout_ PULONG BufferLength
 
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor
 
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG AbsoluteSecurityDescriptorSize
 
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG DaclSize
 
_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
 
_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
 
_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
 
_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_ __inner_callback PRTL_RUN_ONCE_INIT_FN InitFn
 
_In_ __inner_callback PRTL_RUN_ONCE_INIT_FN _Inout_opt_ PVOID Parameter
 
_In_ PCWSTR _In_ LONG SourceStringLength
 
_In_ PCWSTR _In_ LONG _Out_writes_to_ DestinationStringLength PWSTR _Inout_ PLONG DestinationStringLength
 
*UTF8StringActualByteCount PCHAR UTF8StringDestination
 
*UTF8StringActualByteCount PCHAR _In_ ULONG UTF8StringMaxByteCount
 
*UTF8StringActualByteCount PCHAR _In_ ULONG _Out_ PULONG UTF8StringActualByteCount
 
*UTF8StringActualByteCount PCHAR _In_ ULONG _Out_ PULONG _In_ ULONG UnicodeStringByteCount
 
*UnicodeStringActualByteCount PWSTR UnicodeStringDestination
 
*UnicodeStringActualByteCount PWSTR _In_ ULONG UnicodeStringMaxByteCount
 
*UnicodeStringActualByteCount PWSTR _In_ ULONG _Out_ PULONG UnicodeStringActualByteCount
 
*UnicodeStringActualByteCount PWSTR _In_ ULONG _Out_ PULONG _In_ ULONG UTF8StringByteCount
 
_In_ ULONG Shift
 
_In_ PSID OldSid
 
_In_ PSID _In_ PSID NewSid
 
_In_ PSID _In_ PSID _Out_ ULONGNumChanges
 
_Notnull_ __drv_aliasesMem PWSTR Buffer = Buffer
 
_Notnull_ __drv_aliasesMem PWSTR _In_ USHORT BufferSize
 
UnicodeString MaximumLength = BufferSize
 
_In_ LARGE_INTEGER Divisor
 
_In_ LARGE_INTEGER _Out_opt_ PLARGE_INTEGER Remainder
 
_In_ LARGE_INTEGER Addend2
 
ret QuadPart = Addend1.QuadPart + Addend2.QuadPart
 
return ret
 

Macro Definition Documentation

◆ __assert_annotationA

#define __assert_annotationA (   msg)     DbgPrint("Assertion failed at %s(%d): %s\n", __FILE__, __LINE__, msg)

Definition at line 3205 of file rtlfuncs.h.

◆ __assert_annotationW

#define __assert_annotationW (   msg)     DbgPrint("Assertion failed at %s(%d): %S\n", __FILE__, __LINE__, msg)

Definition at line 3207 of file rtlfuncs.h.

◆ ASSERT

#define ASSERT (   exp)    ((void)0)

Definition at line 3275 of file rtlfuncs.h.

◆ ASSERTMSG

#define ASSERTMSG (   msg,
  exp 
)    ((void)0)

Definition at line 3276 of file rtlfuncs.h.

◆ FAST_FAIL_CORRUPT_LIST_ENTRY

#define FAST_FAIL_CORRUPT_LIST_ENTRY   3

◆ FAST_FAIL_FATAL_APP_EXIT

#define FAST_FAIL_FATAL_APP_EXIT   7

◆ FAST_FAIL_GS_COOKIE_INIT

#define FAST_FAIL_GS_COOKIE_INIT   6

◆ FAST_FAIL_GUARD_ICALL_CHECK_FAILURE

#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE   10

◆ FAST_FAIL_GUARD_WRITE_CHECK_FAILURE

#define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE   11

◆ FAST_FAIL_INCORRECT_STACK

#define FAST_FAIL_INCORRECT_STACK   4

◆ FAST_FAIL_INVALID_ARG

#define FAST_FAIL_INVALID_ARG   5

◆ FAST_FAIL_INVALID_FAST_FAIL_CODE

#define FAST_FAIL_INVALID_FAST_FAIL_CODE   0xFFFFFFFF

◆ FAST_FAIL_INVALID_FIBER_SWITCH

#define FAST_FAIL_INVALID_FIBER_SWITCH   12

◆ FAST_FAIL_INVALID_JUMP_BUFFER

#define FAST_FAIL_INVALID_JUMP_BUFFER   18

◆ FAST_FAIL_INVALID_REFERENCE_COUNT

#define FAST_FAIL_INVALID_REFERENCE_COUNT   14

◆ FAST_FAIL_INVALID_SET_OF_CONTEXT

#define FAST_FAIL_INVALID_SET_OF_CONTEXT   13

◆ FAST_FAIL_LEGACY_GS_VIOLATION

#define FAST_FAIL_LEGACY_GS_VIOLATION   0

◆ FAST_FAIL_MRDATA_MODIFIED

#define FAST_FAIL_MRDATA_MODIFIED   19

◆ FAST_FAIL_RANGE_CHECK_FAILURE

#define FAST_FAIL_RANGE_CHECK_FAILURE   8

◆ FAST_FAIL_STACK_COOKIE_CHECK_FAILURE

#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE   2

◆ FAST_FAIL_UNSAFE_REGISTRY_ACCESS

#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS   9

◆ FAST_FAIL_VTGUARD_CHECK_FAILURE

#define FAST_FAIL_VTGUARD_CHECK_FAILURE   1

◆ FIRSTBYTE

#define FIRSTBYTE (   VALUE)    ((VALUE) & LOWBYTE_MASK)

Definition at line 795 of file rtlfuncs.h.

◆ FOURTHBYTE

#define FOURTHBYTE (   VALUE)    (((VALUE) >> 24) & LOWBYTE_MASK)

Definition at line 798 of file rtlfuncs.h.

◆ InitializeListHead32

#define InitializeListHead32 (   ListHead)
Value:
(\
(ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead)))
#define PtrToUlong(u)
Definition: config.h:107

Definition at line 3326 of file rtlfuncs.h.

◆ InterlockedFlushSList

#define InterlockedFlushSList (   SListHead)     ExpInterlockedFlushSList(SListHead)

Definition at line 3395 of file rtlfuncs.h.

◆ InterlockedPopEntrySList

#define InterlockedPopEntrySList (   SListHead)     ExpInterlockedPopEntrySList(SListHead)

Definition at line 3392 of file rtlfuncs.h.

◆ InterlockedPushEntrySList

#define InterlockedPushEntrySList (   SListHead,
  SListEntry 
)     ExpInterlockedPushEntrySList(SListHead, SListEntry)

Definition at line 3389 of file rtlfuncs.h.

◆ LONG_MASK

#define LONG_MASK   (LONG_SIZE - 1)

Definition at line 791 of file rtlfuncs.h.

◆ LONG_SIZE

#define LONG_SIZE   (sizeof(LONG))

Definition at line 789 of file rtlfuncs.h.

◆ LONGLONG_MASK

#define LONGLONG_MASK   (LONGLONG_SIZE - 1)

Definition at line 792 of file rtlfuncs.h.

◆ LONGLONG_SIZE

#define LONGLONG_SIZE   (sizeof(LONGLONG))

Definition at line 790 of file rtlfuncs.h.

◆ LOWBYTE_MASK

#define LOWBYTE_MASK   0x00FF

Definition at line 793 of file rtlfuncs.h.

◆ NT_ANALYSIS_ASSUME

#define NT_ANALYSIS_ASSUME (   _exp)    __noop(_exp)

Definition at line 3216 of file rtlfuncs.h.

◆ NT_ASSERT

#define NT_ASSERT   NT_ASSERT_NOASSUME

Definition at line 3310 of file rtlfuncs.h.

◆ NT_ASSERT_ACTION

#define NT_ASSERT_ACTION (   exp)
Value:
((!(exp)) ? \
DbgRaiseAssertionFailure(), FALSE) : TRUE))
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
DWORD exp
Definition: msg.c:16058
#define __assert_annotationA(msg)
Definition: rtlfuncs.h:3205
#define NT_ANALYSIS_ASSUME(_exp)
Definition: rtlfuncs.h:3216

Definition at line 3219 of file rtlfuncs.h.

◆ NT_ASSERT_ASSUME

#define NT_ASSERT_ASSUME (   exp)    (NT_ANALYSIS_ASSUME(exp), (void)0)

Definition at line 3291 of file rtlfuncs.h.

◆ NT_ASSERT_NOASSUME

#define NT_ASSERT_NOASSUME (   exp)    ((void)0)

Definition at line 3295 of file rtlfuncs.h.

◆ NT_ASSERTMSG

#define NT_ASSERTMSG   NT_ASSERTMSG_NOASSUME

Definition at line 3311 of file rtlfuncs.h.

◆ NT_ASSERTMSG_ACTION

#define NT_ASSERTMSG_ACTION (   msg,
  exp 
)
Value:
((!(exp)) ? \
DbgRaiseAssertionFailure(), FALSE) : TRUE))
#define msg(x)
Definition: auth_time.c:54

Definition at line 3225 of file rtlfuncs.h.

◆ NT_ASSERTMSG_ASSUME

#define NT_ASSERTMSG_ASSUME (   msg,
  exp 
)    (NT_ANALYSIS_ASSUME(exp), (void)0)

Definition at line 3292 of file rtlfuncs.h.

◆ NT_ASSERTMSG_NOASSUME

#define NT_ASSERTMSG_NOASSUME (   msg,
  exp 
)    ((void)0)

Definition at line 3296 of file rtlfuncs.h.

◆ NT_ASSERTMSGW

#define NT_ASSERTMSGW   NT_ASSERTMSGW_NOASSUME

Definition at line 3312 of file rtlfuncs.h.

◆ NT_ASSERTMSGW_ACTION

#define NT_ASSERTMSGW_ACTION (   msg,
  exp 
)
Value:
((!(exp)) ? \
DbgRaiseAssertionFailure(), FALSE) : TRUE))
#define __assert_annotationW(msg)
Definition: rtlfuncs.h:3207

Definition at line 3231 of file rtlfuncs.h.

◆ NT_ASSERTMSGW_ASSUME

#define NT_ASSERTMSGW_ASSUME (   msg,
  exp 
)    (NT_ANALYSIS_ASSUME(exp), (void)0)

Definition at line 3293 of file rtlfuncs.h.

◆ NT_ASSERTMSGW_NOASSUME

#define NT_ASSERTMSGW_NOASSUME (   msg,
  exp 
)    ((void)0)

Definition at line 3297 of file rtlfuncs.h.

◆ NT_FRE_ASSERT

#define NT_FRE_ASSERT   (void)NT_ASSERT_ACTION

Definition at line 3301 of file rtlfuncs.h.

◆ NT_FRE_ASSERTMSG

#define NT_FRE_ASSERTMSG   (void)NT_ASSERTMSG_ACTION

Definition at line 3302 of file rtlfuncs.h.

◆ NT_FRE_ASSERTMSGW

#define NT_FRE_ASSERTMSGW   (void)NT_ASSERTMSGW_ACTION

Definition at line 3303 of file rtlfuncs.h.

◆ NT_VERIFY

#define NT_VERIFY (   exp)    (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))

Definition at line 3287 of file rtlfuncs.h.

◆ NT_VERIFYMSG

#define NT_VERIFYMSG (   msg,
  exp 
)    (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))

Definition at line 3288 of file rtlfuncs.h.

◆ NT_VERIFYMSGW

#define NT_VERIFYMSGW (   msg,
  exp 
)    (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))

Definition at line 3289 of file rtlfuncs.h.

◆ QueryDepthSList

#define QueryDepthSList (   SListHead)     ExQueryDepthSList(SListHead)

Definition at line 3400 of file rtlfuncs.h.

◆ RTL_CONTEXT_CHUNK

#define RTL_CONTEXT_CHUNK (   Context,
  Chunk 
)
Value:
(PCONTEXT_EX)(Context + 1), \
Chunk)
#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk)
Definition: rtlfuncs.h:3407

Definition at line 3413 of file rtlfuncs.h.

◆ RTL_CONTEXT_EX_CHUNK

#define RTL_CONTEXT_EX_CHUNK (   Base,
  Layout,
  Chunk 
)     ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk)))

Definition at line 3407 of file rtlfuncs.h.

◆ RTL_CONTEXT_EX_LENGTH

#define RTL_CONTEXT_EX_LENGTH (   ContextEx,
  Chunk 
)    ((ContextEx)->Chunk.Length)

Definition at line 3406 of file rtlfuncs.h.

◆ RTL_CONTEXT_EX_OFFSET

#define RTL_CONTEXT_EX_OFFSET (   ContextEx,
  Chunk 
)    ((ContextEx)->Chunk.Offset)

Definition at line 3405 of file rtlfuncs.h.

◆ RTL_CONTEXT_LENGTH

#define RTL_CONTEXT_LENGTH (   Context,
  Chunk 
)     RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk)

Definition at line 3411 of file rtlfuncs.h.

◆ RTL_CONTEXT_OFFSET

#define RTL_CONTEXT_OFFSET (   Context,
  Chunk 
)     RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk)

Definition at line 3409 of file rtlfuncs.h.

◆ RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING

#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING   2

◆ RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE

#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE   1

◆ RTL_SOFT_ASSERT

#define RTL_SOFT_ASSERT (   exp)    ((void)0)

Definition at line 3278 of file rtlfuncs.h.

◆ RTL_SOFT_ASSERTMSG

#define RTL_SOFT_ASSERTMSG (   msg,
  exp 
)    ((void)0)

Definition at line 3279 of file rtlfuncs.h.

◆ RTL_SOFT_VERIFY

#define RTL_SOFT_VERIFY (   exp)    ((exp) ? TRUE : FALSE)

Definition at line 3284 of file rtlfuncs.h.

◆ RTL_SOFT_VERIFYMSG

#define RTL_SOFT_VERIFYMSG (   msg,
  exp 
)    ((exp) ? TRUE : FALSE)

Definition at line 3285 of file rtlfuncs.h.

◆ RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT

#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT   8

Definition at line 1176 of file rtlfuncs.h.

◆ RTL_STATIC_LIST_HEAD

#define RTL_STATIC_LIST_HEAD (   x)    LIST_ENTRY x = { &x, &x }

Definition at line 44 of file rtlfuncs.h.

◆ RTL_VERIFY

#define RTL_VERIFY (   exp)    ((exp) ? TRUE : FALSE)

Definition at line 3281 of file rtlfuncs.h.

◆ RTL_VERIFYMSG

#define RTL_VERIFYMSG (   msg,
  exp 
)    ((exp) ? TRUE : FALSE)

Definition at line 3282 of file rtlfuncs.h.

◆ RtlAnsiStringToUnicodeSize

#define RtlAnsiStringToUnicodeSize (   String)
Value:
( \
RtlxAnsiStringToUnicodeSize(String) : \
)
#define NLS_MB_CODE_PAGE_TAG
Definition: nt_native.h:212
#define ANSI_NULL
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
__wchar_t WCHAR
Definition: xmlstorage.h:180

Definition at line 426 of file rtlfuncs.h.

◆ RtlCheckBit

#define RtlCheckBit (   BMH,
  BP 
)    (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1)

Definition at line 3152 of file rtlfuncs.h.

◆ RtlCopyBytes

#define RtlCopyBytes   RtlCopyMemory

Definition at line 282 of file rtlfuncs.h.

◆ RtlCopyMemory

#define RtlCopyMemory (   Destination,
  Source,
  Length 
)     memcpy(Destination, Source, Length)

Definition at line 279 of file rtlfuncs.h.

◆ RtlCopyMemoryNonTemporal

#define RtlCopyMemoryNonTemporal   RtlCopyMemory

Definition at line 293 of file rtlfuncs.h.

◆ RtlEqualLuid

#define RtlEqualLuid (   Luid1,
  Luid2 
)     (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))

Definition at line 301 of file rtlfuncs.h.

◆ RtlEqualMemory

#define RtlEqualMemory (   Destination,
  Source,
  Length 
)     (!memcmp(Destination, Source, Length))

Definition at line 310 of file rtlfuncs.h.

◆ RtlFillBytes

#define RtlFillBytes   RtlFillMemory

Definition at line 322 of file rtlfuncs.h.

◆ RtlFillMemory

#define RtlFillMemory (   Destination,
  Length,
  Fill 
)     memset(Destination, Fill, Length)

Definition at line 319 of file rtlfuncs.h.

◆ RtlInitializeSplayLinks

#define RtlInitializeSplayLinks (   Links)
Value:
{ \
PRTL_SPLAY_LINKS _SplayLinks; \
_SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
_SplayLinks->Parent = _SplayLinks; \
_SplayLinks->LeftChild = NULL; \
_SplayLinks->RightChild = NULL; \
}
#define NULL
Definition: types.h:112
struct _RTL_SPLAY_LINKS * PRTL_SPLAY_LINKS

◆ RtlInsertAsLeftChild

#define RtlInsertAsLeftChild (   ParentLinks,
  ChildLinks 
)
Value:
{ \
PRTL_SPLAY_LINKS _SplayParent; \
PRTL_SPLAY_LINKS _SplayChild; \
_SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
_SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
_SplayParent->LeftChild = _SplayChild; \
_SplayChild->Parent = _SplayParent; \
}

◆ RtlInsertAsRightChild

#define RtlInsertAsRightChild (   ParentLinks,
  ChildLinks 
)
Value:
{ \
PRTL_SPLAY_LINKS _SplayParent; \
PRTL_SPLAY_LINKS _SplayChild; \
_SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
_SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
_SplayParent->RightChild = _SplayChild; \
_SplayChild->Parent = _SplayParent; \
}

◆ RtlInterlockedAndBits

#define RtlInterlockedAndBits (   Flags,
  Flag 
)     InterlockedAnd((PLONG)(Flags), Flag)

Definition at line 3437 of file rtlfuncs.h.

◆ RtlInterlockedAndBitsDiscardReturn

#define RtlInterlockedAndBitsDiscardReturn (   Flags,
  Flag 
)     (VOID) RtlInterlockedAndBits(Flags, Flag)

Definition at line 3449 of file rtlfuncs.h.

◆ RtlInterlockedClearBits

#define RtlInterlockedClearBits (   Flags,
  Flag 
)     RtlInterlockedAndBits(Flags, ~(Flag))

Definition at line 3440 of file rtlfuncs.h.

◆ RtlInterlockedClearBitsDiscardReturn

#define RtlInterlockedClearBitsDiscardReturn (   Flags,
  Flag 
)     RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag))

Definition at line 3452 of file rtlfuncs.h.

◆ RtlInterlockedSetBits

#define RtlInterlockedSetBits (   Flags,
  Flag 
)     InterlockedOr((PLONG)(Flags), Flag)

Definition at line 3434 of file rtlfuncs.h.

◆ RtlInterlockedSetBitsDiscardReturn

#define RtlInterlockedSetBitsDiscardReturn (   Flags,
  Flag 
)     (VOID) RtlInterlockedSetBits(Flags, Flag)

Definition at line 3446 of file rtlfuncs.h.

◆ RtlInterlockedXorBits

#define RtlInterlockedXorBits (   Flags,
  Flag 
)     InterlockedXor(Flags, Flag)

Definition at line 3443 of file rtlfuncs.h.

◆ RtlIntPtrToUnicodeString

#define RtlIntPtrToUnicodeString (   Value,
  Base,
  String 
)     RtlIntegerToUnicodeString(Value, Base, String)

Definition at line 745 of file rtlfuncs.h.

◆ RtlIsLeftChild

#define RtlIsLeftChild (   Links)     (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))

◆ RtlIsNtDdiVersionAvailable

#define RtlIsNtDdiVersionAvailable   WdmlibRtlIsNtDdiVersionAvailable

Definition at line 3427 of file rtlfuncs.h.

◆ RtlIsRightChild

#define RtlIsRightChild (   Links)     (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))

◆ RtlIsRoot

#define RtlIsRoot (   Links)     (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))

◆ RtlIsServicePackVersionInstalled

#define RtlIsServicePackVersionInstalled   WdmlibRtlIsServicePackVersionInstalled

Definition at line 3431 of file rtlfuncs.h.

◆ RtlIsZeroLuid

#define RtlIsZeroLuid (   _L1)     ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))

Definition at line 753 of file rtlfuncs.h.

◆ RtlLargeIntegerAnd

#define RtlLargeIntegerAnd (   Result,
  Source,
  Mask 
)     Result.QuadPart = Source.QuadPart & Mask.QuadPart

Definition at line 3099 of file rtlfuncs.h.

◆ RtlLargeIntegerEqualTo

#define RtlLargeIntegerEqualTo (   X,
  Y 
)     (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))

Definition at line 3120 of file rtlfuncs.h.

◆ RtlLargeIntegerEqualToZero

#define RtlLargeIntegerEqualToZero (   X)    ( !((X).LowPart | (X).HighPart) )

Definition at line 3186 of file rtlfuncs.h.

◆ RtlLargeIntegerGreaterOrEqualToZero

#define RtlLargeIntegerGreaterOrEqualToZero (   X)    ( (X).HighPart >= 0 )

Definition at line 3184 of file rtlfuncs.h.

◆ RtlLargeIntegerGreaterThan

#define RtlLargeIntegerGreaterThan (   X,
  Y 
)
Value:
( \
(((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
((X).HighPart > (Y).HighPart) \
)
#define Y(I)
#define X(b, s)

Definition at line 3155 of file rtlfuncs.h.

◆ RtlLargeIntegerGreaterThanOrEqualTo

#define RtlLargeIntegerGreaterThanOrEqualTo (   X,
  Y 
)
Value:
( \
(((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
((X).HighPart > (Y).HighPart) \
)

Definition at line 3160 of file rtlfuncs.h.

◆ RtlLargeIntegerGreaterThanZero

#define RtlLargeIntegerGreaterThanZero (   X)
Value:
( \
(((X).HighPart == 0) && ((X).LowPart > 0)) || \
((X).HighPart > 0 ) \
)

Definition at line 3179 of file rtlfuncs.h.

◆ RtlLargeIntegerLessOrEqualToZero

#define RtlLargeIntegerLessOrEqualToZero (   X)    ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) )

Definition at line 3192 of file rtlfuncs.h.

◆ RtlLargeIntegerLessThan

#define RtlLargeIntegerLessThan (   X,
  Y 
)
Value:
( \
(((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
((X).HighPart < (Y).HighPart) \
)

Definition at line 3169 of file rtlfuncs.h.

◆ RtlLargeIntegerLessThanOrEqualTo

#define RtlLargeIntegerLessThanOrEqualTo (   X,
  Y 
)
Value:
( \
(((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
((X).HighPart < (Y).HighPart) \
)

Definition at line 3174 of file rtlfuncs.h.

◆ RtlLargeIntegerLessThanZero

#define RtlLargeIntegerLessThanZero (   X)    ( ((X).HighPart < 0) )

Definition at line 3190 of file rtlfuncs.h.

◆ RtlLargeIntegerNotEqualTo

#define RtlLargeIntegerNotEqualTo (   X,
  Y 
)
Value:
( \
(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
)

Definition at line 3165 of file rtlfuncs.h.

◆ RtlLargeIntegerNotEqualToZero

#define RtlLargeIntegerNotEqualToZero (   X)    ( ((X).LowPart | (X).HighPart) )

Definition at line 3188 of file rtlfuncs.h.

◆ RtlLeftChild

#define RtlLeftChild (   Links)     ((PRTL_SPLAY_LINKS)(Links))->LeftChild

◆ RtlMoveMemory

#define RtlMoveMemory (   Destination,
  Source,
  Length 
)     memmove(Destination, Source, Length)

Definition at line 362 of file rtlfuncs.h.

◆ RtlOemStringToCountedUnicodeSize

#define RtlOemStringToCountedUnicodeSize (   STRING)
Value:
( \
)
std::wstring STRING
Definition: fontsub.cpp:33
#define UNICODE_NULL
uint32_t ULONG
Definition: typedefs.h:59
#define RtlOemStringToUnicodeSize(STRING)

◆ RtlOemStringToUnicodeSize

#define RtlOemStringToUnicodeSize (   STRING)
Value:
( \
RtlxOemStringToUnicodeSize(STRING) : \
)
#define NLS_MB_OEM_CODE_PAGE_TAG
Definition: nt_native.h:213

◆ RtlOffsetToPointer

#define RtlOffsetToPointer (   B,
  O 
)    ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))

◆ RtlParent

#define RtlParent (   Links)     ((PRTL_SPLAY_LINKS)(Links))->Parent

◆ RtlPointerToOffset

#define RtlPointerToOffset (   B,
  P 
)    ((ULONG)(((PCHAR)(P)) - ((PCHAR)(B))))

◆ RtlRetrieveUlong

#define RtlRetrieveUlong (   DestAddress,
  SrcAddress 
)
Value:
if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
{ \
((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
} \
else \
{ \
*((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
}
uint32_t * PULONG
Definition: typedefs.h:59
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char * PUCHAR
Definition: typedefs.h:53
#define LONG_MASK
Definition: rtlfuncs.h:791

Definition at line 909 of file rtlfuncs.h.

◆ RtlRetrieveUshort

#define RtlRetrieveUshort (   DestAddress,
  SrcAddress 
)
Value:
if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
{ \
((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
} \
else \
{ \
*((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
}
uint16_t * PUSHORT
Definition: typedefs.h:56

Definition at line 898 of file rtlfuncs.h.

◆ RtlRightChild

#define RtlRightChild (   Links)     ((PRTL_SPLAY_LINKS)(Links))->RightChild

◆ RtlStoreUlong

#define RtlStoreUlong (   Address,
  Value 
)
Value:
if ((ULONG_PTR)(Address) & LONG_MASK) { \
} \
else { \
*((PULONG)(Address)) = (ULONG) (Value); \
}
static WCHAR Address[46]
Definition: ping.c:68
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:1018
#define THIRDBYTE(VALUE)
Definition: rtlfuncs.h:797
#define FOURTHBYTE(VALUE)
Definition: rtlfuncs.h:798
#define SECONDBYTE(VALUE)
Definition: rtlfuncs.h:796
#define FIRSTBYTE(VALUE)
Definition: rtlfuncs.h:795
#define LONG_3RD_MOST_SIGNIFICANT_BIT
Definition: rtltypes.h:222
#define LONG_LEAST_SIGNIFICANT_BIT
Definition: rtltypes.h:221
#define LONG_2ND_MOST_SIGNIFICANT_BIT
Definition: rtltypes.h:223
#define LONG_MOST_SIGNIFICANT_BIT
Definition: rtltypes.h:224
unsigned char UCHAR
Definition: xmlstorage.h:181

Definition at line 868 of file rtlfuncs.h.

◆ RtlStoreUlonglong

#define RtlStoreUlonglong (   Address,
  Value 
)
Value:
RtlStoreUlong((ULONG_PTR)(Address), \
(ULONGLONG)(Value) & 0xFFFFFFFF); \
RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \
(ULONGLONG)(Value) >> 32); \
} else { \
}
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:383
uint64_t ULONGLONG
Definition: typedefs.h:67
#define LONGLONG_MASK
Definition: rtlfuncs.h:792

Definition at line 879 of file rtlfuncs.h.

◆ RtlStoreUlongPtr

#define RtlStoreUlongPtr (   Address,
  Value 
)    RtlStoreUlong(Address,Value)

Definition at line 932 of file rtlfuncs.h.

◆ RtlStoreUshort

#define RtlStoreUshort (   Address,
  Value 
)
Value:
} \
else { \
*((PUSHORT) (Address)) = (USHORT)Value; \
}
unsigned short USHORT
Definition: pedump.c:61
#define SHORT_MASK
Definition: rtlfuncs.h:788
#define SHORT_LEAST_SIGNIFICANT_BIT
Definition: rtltypes.h:218
#define SHORT_MOST_SIGNIFICANT_BIT
Definition: rtltypes.h:219

Definition at line 889 of file rtlfuncs.h.

◆ RtlUlongByteSwap

#define RtlUlongByteSwap (   _x)    _byteswap_ulong((_x))

Definition at line 3198 of file rtlfuncs.h.

◆ RtlUlonglongByteSwap

#define RtlUlonglongByteSwap (   _x)    _byteswap_uint64((_x))

Definition at line 3199 of file rtlfuncs.h.

◆ RtlUnicodeStringToAnsiSize

#define RtlUnicodeStringToAnsiSize (   String)
Value:
( \
RtlxUnicodeStringToAnsiSize(String) : \
)

Definition at line 1005 of file rtlfuncs.h.

◆ RtlUnicodeStringToOemSize

#define RtlUnicodeStringToOemSize (   STRING)
Value:
RtlxUnicodeStringToOemSize(STRING) : \
)

◆ RtlUshortByteSwap

#define RtlUshortByteSwap (   _x)    _byteswap_ushort((USHORT)(_x))

Definition at line 3197 of file rtlfuncs.h.

◆ RtlZeroBytes

#define RtlZeroBytes   RtlZeroMemory

Definition at line 383 of file rtlfuncs.h.

◆ RtlZeroMemory

#define RtlZeroMemory (   Destination,
  Length 
)     memset(Destination, 0, Length)

Definition at line 380 of file rtlfuncs.h.

◆ SECONDBYTE

#define SECONDBYTE (   VALUE)    (((VALUE) >> 8) & LOWBYTE_MASK)

Definition at line 796 of file rtlfuncs.h.

◆ SHORT_MASK

#define SHORT_MASK   (SHORT_SIZE - 1)

Definition at line 788 of file rtlfuncs.h.

◆ SHORT_SIZE

#define SHORT_SIZE   (sizeof(USHORT))

Definition at line 787 of file rtlfuncs.h.

◆ THIRDBYTE

#define THIRDBYTE (   VALUE)    (((VALUE) >> 16) & LOWBYTE_MASK)

Definition at line 797 of file rtlfuncs.h.

Function Documentation

◆ $endif() [1/3]

$endif ( _NTDDK_  )

Definition at line 546 of file iofuncs.h.

2502{
2503 PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
2504 PriorityInfo->ThreadPriority = 0xffff;
2505 PriorityInfo->IoPriority = IoPriorityNormal;
2506 PriorityInfo->PagePriority = 0;
2507}
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
Definition: fltkernel.h:2654
struct _IO_PRIORITY_INFO IO_PRIORITY_INFO
@ IoPriorityNormal
Definition: iotypes.h:1233

◆ $endif() [2/3]

$endif ( _NTIFS_  )

Definition at line 2825 of file rtlfuncs.h.

2839{
2841 ret.QuadPart = SignedInteger;
2842 return ret;
2843}
return ret
Definition: rtlfuncs.h:3090

◆ $endif() [3/3]

$endif ( _WDMDDK_  )

Definition at line 3455 of file rtlfuncs.h.

3475 { \
3476 PRTL_SPLAY_LINKS _SplayLinks; \
3477 _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
3478 _SplayLinks->Parent = _SplayLinks; \
3479 _SplayLinks->LeftChild = NULL; \
3480 _SplayLinks->RightChild = NULL; \
3481}
3482
3483#define RtlIsLeftChild(Links) \
3484 (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3485
3486#define RtlIsRightChild(Links) \
3487 (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3488
3489#define RtlRightChild(Links) \
3490 ((PRTL_SPLAY_LINKS)(Links))->RightChild
3491
3492#define RtlIsRoot(Links) \
3493 (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
3494
3495#define RtlLeftChild(Links) \
3496 ((PRTL_SPLAY_LINKS)(Links))->LeftChild
3497
3498#define RtlParent(Links) \
3499 ((PRTL_SPLAY_LINKS)(Links))->Parent
3500
3501#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
3502 { \
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; \
3509 }
3510
3511#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
3512 { \
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; \
3519 }
3520
3521#if !defined(MIDL_PASS)
3522
3524LUID
3526RtlConvertLongToLuid(
3527 _In_ LONG Val)
3528{
3529 LUID Luid;
3530 LARGE_INTEGER Temp;
3531
3532 Temp.QuadPart = Val;
3533 Luid.LowPart = Temp.u.LowPart;
3534 Luid.HighPart = Temp.u.HighPart;
3535 return Luid;
3536}
#define _In_
Definition: ms_sal.h:308
long LONG
Definition: pedump.c:60
LONG HighPart
DWORD LowPart
#define NTAPI_INLINE
Definition: umtypes.h:68
LONGLONG QuadPart
Definition: typedefs.h:114
struct _LARGE_INTEGER::@2290 u
#define FORCEINLINE
Definition: wdftypes.h:67

◆ $if()

$if ( _WDMDDK_  )

Kernel definitions for ARM64

Kernel definitions for AMD64

Kernel definitions for ARM

Definition at line 5 of file rtlfuncs.h.

30{
31 __fastfail(Code);
32}
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
Definition: wdfdevice.h:1701

◆ __drv_allocatesMem()

__drv_allocatesMem ( Mem  )

Definition at line 37 of file exfuncs.h.

1484{
1485 PVOID Entry;
1486
1487 Lookaside->L.TotalAllocates++;
1488#ifdef NONAMELESSUNION
1489#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1491 &Lookaside->Lock__ObsoleteButDoNotDelete);
1492#else
1493 Entry = InterlockedPopEntrySList(&Lookaside->L.u.ListHead);
1494#endif
1495 if (Entry == NULL) {
1496 Lookaside->L.u2.AllocateMisses++;
1497 Entry = (Lookaside->L.u4.Allocate)(Lookaside->L.Type,
1498 Lookaside->L.Size,
1499 Lookaside->L.Tag);
1500 }
1501#else /* NONAMELESSUNION */
1502#if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1504 &Lookaside->Lock__ObsoleteButDoNotDelete);
1505#else
1507#endif
1508 if (Entry == NULL) {
1509 Lookaside->L.AllocateMisses++;
1510 Entry = (Lookaside->L.Allocate)(Lookaside->L.Type,
1511 Lookaside->L.Size,
1512 Lookaside->L.Tag);
1513 }
1514#endif /* NONAMELESSUNION */
1515 return Entry;
1516}
base of all file and directory entries
Definition: entries.h:83
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
Definition: wdfmemory.h:414
_In_ PVOID Entry
Definition: exfuncs.h:229
#define ExInterlockedPopEntrySList(SListHead, Lock)
Definition: exfuncs.h:166
#define InterlockedPopEntrySList(SListHead)
Definition: rtlfuncs.h:3392

◆ _At_() [1/6]

Definition at line 2952 of file rtlfuncs.h.

2961{
2962 AnsiString->Length = 0;
2963 AnsiString->MaximumLength = BufferSize;
2964 AnsiString->Buffer = Buffer;
2965}
@ AnsiString
Definition: dnslib.h:19
_Notnull_ __drv_aliasesMem PWSTR _In_ USHORT BufferSize
Definition: rtlfuncs.h:2978
_Notnull_ __drv_aliasesMem PWSTR Buffer
Definition: rtlfuncs.h:2976

◆ _At_() [2/6]

_At_ ( BitMapHeader->  SizeOfBitMap,
_Post_equal_to_(SizeOfBitMap)   
) -> Buffer, _Post_equal_to_(BitMapBuffer)) NTSYSAPI VOID NTAPI RtlInitializeBitMap(_Out_ PRTL_BITMAP BitMapHeader, _In_opt_ __drv_aliasesMem PULONG BitMapBuffer, _In_opt_ ULONG SizeOfBitMap)

◆ _At_() [3/6]

_Out_ _At_ ( DestinationString->  Buffer,
__drv_allocatesMem(Mem)   
)

◆ _At_() [4/6]

◆ _At_() [5/6]

_Out_ _At_ ( GuidString->  Buffer,
__drv_allocatesMem(Mem)   
)

◆ _At_() [6/6]

◆ _In_range_() [1/4]

_In_range_ ( <, BitMapHeader->  SizeOfBitMap)

◆ _In_range_() [2/4]

_In_ ULONG _In_ ULONG _In_range_ ( )

◆ _In_range_() [3/4]

◆ _In_range_() [4/4]

_In_ ULONG _In_range_ ( >=  ,
(UncompressedBufferSize -(UncompressedBufferSize/16))   
)

◆ _In_reads_()

_In_ SIZE_T _In_reads_ ( String2Length  )

◆ _In_reads_bytes_() [1/9]

_In_ ULONG _In_ ULONG _In_reads_bytes_ ( AceListLength  )

◆ _In_reads_bytes_() [2/9]

◆ _In_reads_bytes_() [3/9]

◆ _In_reads_bytes_() [4/9]

◆ _In_reads_bytes_() [5/9]

_In_reads_bytes_ ( BytesInUnicodeString  )

◆ _In_reads_bytes_() [6/9]

_In_ ULONG _In_reads_bytes_ ( CompressedBufferSize  )

◆ _In_reads_bytes_() [7/9]

_In_ ULONG _In_ ULONG _In_reads_bytes_ ( CompressedTailSize  )

◆ _In_reads_bytes_() [8/9]

◆ _In_reads_bytes_() [9/9]

◆ _In_reads_bytes_opt_()

_In_ PCWSTR _In_z_ PCWSTR _In_ ULONG _In_reads_bytes_opt_ ( ValueLength  )

◆ _Inout_updates_bytes_()

_In_ ULONG _Inout_updates_bytes_ ( CompressedDataInfoLength  )

◆ _IRQL_requires_max_() [1/3]

_IRQL_requires_max_ ( APC_LEVEL  )

Definition at line 37 of file cddata.c.

254{
255 THREAD_CONTEXT ThreadContext = {0};
256 PIRP_CONTEXT IrpContext = NULL;
258
259#ifdef CD_SANITY
260 PVOID PreviousTopLevel;
261#endif
262
264
265#if DBG
266
267 KIRQL SaveIrql = KeGetCurrentIrql();
268
269#endif
270
272
274
276
277#ifdef CD_SANITY
278 PreviousTopLevel = IoGetTopLevelIrp();
279#endif
280
281 //
282 // Loop until this request has been completed or posted.
283 //
284
285 do {
286
287 //
288 // Use a try-except to handle the exception cases.
289 //
290
291 _SEH2_TRY {
292
293 //
294 // If the IrpContext is NULL then this is the first pass through
295 // this loop.
296 //
297
298 if (IrpContext == NULL) {
299
300 //
301 // Decide if this request is waitable an allocate the IrpContext.
302 // If the file object in the stack location is NULL then this
303 // is a mount which is always waitable. Otherwise we look at
304 // the file object flags.
305 //
306
308
309 Wait = TRUE;
310
311 } else {
312
313 Wait = CanFsdWait( Irp );
314 }
315
316 IrpContext = CdCreateIrpContext( Irp, Wait );
317
318 //
319 // Update the thread context information.
320 //
321
322 CdSetThreadContext( IrpContext, &ThreadContext );
323
324#ifdef CD_SANITY
325 NT_ASSERT( !CdTestTopLevel ||
326 SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327#endif
328
329 //
330 // Otherwise cleanup the IrpContext for the retry.
331 //
332
333 } else {
334
335 //
336 // Set the MORE_PROCESSING flag to make sure the IrpContext
337 // isn't inadvertently deleted here. Then cleanup the
338 // IrpContext to perform the retry.
339 //
340
341 SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342 CdCleanupIrpContext( IrpContext, FALSE );
343 }
344
345 //
346 // Case on the major irp code.
347 //
348
349 switch (IrpContext->MajorFunction) {
350
351 case IRP_MJ_CREATE :
352
353 Status = CdCommonCreate( IrpContext, Irp );
354 break;
355
356 case IRP_MJ_CLOSE :
357
358 Status = CdCommonClose( IrpContext, Irp );
359 break;
360
361 case IRP_MJ_READ :
362
363 //
364 // If this is an Mdl complete request, don't go through
365 // common read.
366 //
367
368 if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369
370 Status = CdCompleteMdl( IrpContext, Irp );
371
372 } else {
373
374 Status = CdCommonRead( IrpContext, Irp );
375 }
376
377 break;
378
379 case IRP_MJ_WRITE :
380
381 Status = CdCommonWrite( IrpContext, Irp );
382 break;
383
385
386 Status = CdCommonQueryInfo( IrpContext, Irp );
387 break;
388
390
391 Status = CdCommonSetInfo( IrpContext, Irp );
392 break;
393
395
396 Status = CdCommonQueryVolInfo( IrpContext, Irp );
397 break;
398
400
401 Status = CdCommonDirControl( IrpContext, Irp );
402 break;
403
405
406 Status = CdCommonFsControl( IrpContext, Irp );
407 break;
408
410
411 Status = CdCommonDevControl( IrpContext, Irp );
412 break;
413
415
416 Status = CdCommonLockControl( IrpContext, Irp );
417 break;
418
419 case IRP_MJ_CLEANUP :
420
421 Status = CdCommonCleanup( IrpContext, Irp );
422 break;
423
424 case IRP_MJ_PNP :
425
426 Status = CdCommonPnp( IrpContext, Irp );
427 break;
428
429 case IRP_MJ_SHUTDOWN :
430
431 Status = CdCommonShutdown( IrpContext, Irp );
432 break;
433
434 default :
435
437 CdCompleteRequest( IrpContext, Irp, Status );
438 }
439
441
442 Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443 } _SEH2_END;
444
445 } while (Status == STATUS_CANT_WAIT);
446
447#ifdef CD_SANITY
448 NT_ASSERT( !CdTestTopLevel ||
449 (PreviousTopLevel == IoGetTopLevelIrp()) );
450#endif
451
453
454 NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455
456 return Status;
457}
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:251
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ PIRP Irp
Definition: csq.h:116
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
Status
Definition: gdiplustypes.h:25
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:159
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:158
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2793
#define IRP_MN_COMPLETE
Definition: iotypes.h:4420
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SHUTDOWN
#define IRP_MJ_CLEANUP
#define NT_ASSERT
Definition: rtlfuncs.h:3310

◆ _IRQL_requires_max_() [2/3]

◆ _IRQL_requires_max_() [3/3]

_IRQL_requires_max_ ( PASSIVE_LEVEL  ) -> Buffer, __drv_freesMem(Mem)) PUNICODE_STRING UnicodeString)

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

An extended function that assigns a security descriptor for a new object.

Frees a security descriptor.

An extended function that sets new information data to a security descriptor.

Modifies some information data about a security descriptor.

Parameters
[in]SecurityInformationSecurity information details to be queried from a security descriptor.
[out]SecurityDescriptorThe returned security descriptor with security information data.
[in,out]LengthThe returned length of a security descriptor.
[in,out]ObjectsSecurityDescriptorThe returned object security descriptor.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
See SeSetSecurityDescriptorInfoEx.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]AutoInheritFlagsFlags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
Parameters
[in]SecurityDescriptorA security descriptor to be freed from memory.
Returns
Returns STATUS_SUCCESS.
Parameters
[in]_ParentDescriptorA security descriptor of the parent object that is being created.
[in]_ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]ObjectTypeThe type of the new object.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]AutoInheritFlagsAutomatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
Parameters
[in]ParentDescriptorA security descriptor of the parent object that is being created.
[in]ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
See SeAssignSecurityEx.
Parameters
[in]SecurityDescriptorA security descriptor.
[out]QuotaInfoSizeThe returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even.
Returns
Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.

Definition at line 923 of file Messaging.c.

75{
76 PFLT_SERVER_PORT_OBJECT PortObject;
78
79 /* The caller must allow at least one connection */
80 if (MaxConnections == 0)
81 {
83 }
84
85 /* The request must be for a kernel handle */
86 if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87 {
89 }
90
91 /*
92 * Get rundown protection on the target to stop the owner
93 * from unloading whilst this port object is open. It gets
94 * removed in the FltpServerPortClose callback
95 */
97 if (!NT_SUCCESS(Status))
98 {
99 return Status;
100 }
101
102 /* Create the server port object for this filter */
107 NULL,
109 0,
110 0,
111 (PVOID *)&PortObject);
112 if (NT_SUCCESS(Status))
113 {
114 /* Zero out the struct */
115 RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116
117 /* Increment the ref count on the target filter */
119
120 /* Setup the filter port object */
121 PortObject->Filter = Filter;
125 PortObject->Cookie = ServerPortCookie;
126 PortObject->MaxConnections = MaxConnections;
127
128 /* Insert the object */
129 Status = ObInsertObject(PortObject,
130 NULL,
132 0,
133 NULL,
135 if (NT_SUCCESS(Status))
136 {
137 /* Lock the connection list */
139
140 /* Add the new port object to the connection list and increment the count */
143
144 /* Unlock the connection list*/
146 }
147 }
148
149 if (!NT_SUCCESS(Status))
150 {
151 /* Allow the filter to be cleaned up */
153 }
154
155 return Status;
156}
static const INTERNET_PORT ServerPort
Definition: CWebService.cpp:11
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1877
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1875
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1874
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1876
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
static LONG MaxConnections
#define KernelMode
Definition: asm.h:34
#define FILE_READ_DATA
Definition: nt_native.h:628
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2935
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:1039
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121
LIST_ENTRY mList
Definition: fltmgrint.h:56
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ _Out_range_()

_Out_range_ ( )
pure virtual

◆ _Out_writes_bytes_() [1/2]

_In_ ULONG _Out_writes_bytes_ ( CompressedBufferSize  )

◆ _Out_writes_bytes_() [2/2]

_Out_writes_bytes_ ( DestinationSidLength  )

◆ _Out_writes_bytes_to_() [1/4]

_Out_writes_bytes_to_ ( MaxBytesInCustomCPString  ,
BytesInCustomCPString 
)

◆ _Out_writes_bytes_to_() [2/4]

_Out_writes_bytes_to_ ( MaxBytesInUnicodeString  ,
BytesInUnicodeString 
)

◆ _Out_writes_bytes_to_() [3/4]

_Out_writes_bytes_to_ ( UncompressedBufferSize  ,
FinalUncompressedSize 
)

◆ _Out_writes_bytes_to_() [4/4]

_Out_writes_bytes_to_ ( UncompressedFragmentSize  ,
FinalUncompressedSize 
)

◆ _Post_satisfies_()

_Post_satisfies_ ( return >=8 &&return<=  SECURITY_MAX_SID_SIZE)

◆ _Ret_range_()

_Ret_range_ ( )

◆ _Success_() [1/2]

◆ _Success_() [2/2]

_Success_ ( return = -1)

Definition at line 1028 of file fsctrl.c.

3189{
3191
3192 PVPB Vpb = Vcb->Vpb;
3193 PVPB OldVpb;
3194
3195 BOOLEAN Remount = FALSE;
3196
3197 PAGED_CODE();
3198
3199 UNREFERENCED_PARAMETER( IrpContext );
3200
3201 //
3202 // Check whether we are looking for a device only Mvcb.
3203 //
3204
3205 for (Link = CdData.VcbQueue.Flink;
3206 Link != &CdData.VcbQueue;
3207 Link = Link->Flink) {
3208
3209 *OldVcb = CONTAINING_RECORD( Link, VCB, VcbLinks );
3210
3211 //
3212 // Skip ourselves.
3213 //
3214
3215 if (Vcb == *OldVcb) { continue; }
3216
3217 //
3218 // Look at the Vpb and state of the previous Vcb.
3219 //
3220
3221 OldVpb = (*OldVcb)->Vpb;
3222
3223 if ((OldVpb != Vpb) &&
3224 (OldVpb->RealDevice == Vpb->RealDevice) &&
3225 ((*OldVcb)->VcbCondition == VcbNotMounted)) {
3226
3227 //
3228 // If the current disk is a raw disk then it can match a previous music or
3229 // raw disk.
3230 //
3231
3232 if (FlagOn( Vcb->VcbState, VCB_STATE_AUDIO_DISK)) {
3233
3234 if (FlagOn( (*OldVcb)->VcbState, VCB_STATE_AUDIO_DISK )) {
3235
3236 //
3237 // If we have both TOC then fail the remount if the lengths
3238 // are different or they don't match.
3239 //
3240
3241 if ((Vcb->TocLength != (*OldVcb)->TocLength) ||
3242 ((Vcb->TocLength != 0) &&
3243 !RtlEqualMemory( Vcb->CdromToc,
3244 (*OldVcb)->CdromToc,
3245 Vcb->TocLength ))) {
3246
3247 continue;
3248 }
3249
3250 Remount = TRUE;
3251 break;
3252 }
3253
3254 //
3255 // The current disk is not a raw disk. Go ahead and compare
3256 // serial numbers, volume label and TOC.
3257 //
3258
3259 }
3260 else if ((OldVpb->SerialNumber == Vpb->SerialNumber) &&
3261 (Vcb->TocLength == (*OldVcb)->TocLength) &&
3262 ((Vcb->TocLength == 0) || RtlEqualMemory( Vcb->CdromToc,
3263 (*OldVcb)->CdromToc,
3264 Vcb->TocLength )) &&
3265 (Vpb->VolumeLabelLength == OldVpb->VolumeLabelLength) &&
3266 (RtlEqualMemory( OldVpb->VolumeLabel,
3267 Vpb->VolumeLabel,
3268 Vpb->VolumeLabelLength ))) {
3269 //
3270 // Remember the old Vcb. Then set the return value to
3271 // TRUE and break.
3272 //
3273
3274 Remount = TRUE;
3275 break;
3276 }
3277 }
3278 }
3279
3280 return Remount;
3281}
#define PAGED_CODE()
CD_DATA CdData
Definition: cddata.c:42
#define VCB_STATE_AUDIO_DISK
Definition: cdstruc.h:712
@ VcbNotMounted
Definition: cdstruc.h:490
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
Definition: fatprocs.h:1675
#define RtlEqualMemory(a, b, c)
Definition: kdvm.h:18
#define Vcb
Definition: cdprocs.h:1415
LIST_ENTRY VcbQueue
Definition: cdstruc.h:334
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
Definition: cdstruc.h:498
Definition: iotypes.h:189
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH/sizeof(WCHAR)]
Definition: iotypes.h:198
USHORT VolumeLabelLength
Definition: iotypes.h:193
ULONG SerialNumber
Definition: iotypes.h:196
struct _DEVICE_OBJECT * RealDevice
Definition: iotypes.h:195
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
static int Link(const char **args)
Definition: vfdcmd.c:2414

◆ _Unchanged_()

◆ _When_() [1/2]

◆ _When_() [2/2]

_When_ ( )
pure virtual

◆ AppendTailList()

FORCEINLINE VOID AppendTailList ( _Inout_ PLIST_ENTRY  ListHead,
_Inout_ PLIST_ENTRY  ListToAppend 
)

Definition at line 222 of file rtlfuncs.h.

225{
226 PLIST_ENTRY ListEnd = ListHead->Blink;
227
228#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
229 RtlpCheckListEntry(ListHead);
230 RtlpCheckListEntry(ListToAppend);
231#endif
232 ListHead->Blink->Flink = ListToAppend;
233 ListHead->Blink = ListToAppend->Blink;
234 ListToAppend->Blink->Flink = ListHead;
235 ListToAppend->Blink = ListEnd;
236}
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY ListEnd
Definition: exfuncs.h:1224
FORCEINLINE VOID RtlpCheckListEntry(_In_ PLIST_ENTRY Entry)
Definition: rtlfuncs.h:95

◆ FatalListEntryError()

FORCEINLINE VOID FatalListEntryError ( _In_ PVOID  P1,
_In_ PVOID  P2,
_In_ PVOID  P3 
)

◆ InitializeListHead()

FORCEINLINE VOID InitializeListHead ( _Out_ PLIST_ENTRY  ListHead)

Definition at line 48 of file rtlfuncs.h.

50{
51 ListHead->Flink = ListHead->Blink = ListHead;
52}

◆ InitializeSListHead()

FORCEINLINE VOID InitializeSListHead ( _Out_ PSLIST_HEADER  SListHead)

Definition at line 3351 of file rtlfuncs.h.

3353{
3354#if defined(_WIN64)
3355 if (((ULONG_PTR)SListHead & 0xf) != 0) {
3357 }
3358#if defined(_IA64_)
3359 SListHead->Region = (ULONG_PTR)SListHead & VRN_MASK;
3360#else
3361 SListHead->Region = 0;
3362#endif /* _IA64_ */
3363#endif /* _WIN64 */
3364 SListHead->Alignment = 0;
3365}
#define ULONG_PTR
Definition: config.h:101
#define ExRaiseStatus
Definition: ntoskrnl.h:114
#define STATUS_DATATYPE_MISALIGNMENT
Definition: ntstatus.h:183

Referenced by ExInitializeSystemLookasideList(), ExInitPoolLookasidePointers(), InitializeTransferPackets(), MiInitializeNonPagedPool(), MmArmInitSystem(), START_TEST(), and test_slist().

◆ InsertHeadList()

FORCEINLINE VOID InsertHeadList ( _Inout_ PLIST_ENTRY  ListHead,
_Inout_ __drv_aliasesMem PLIST_ENTRY  Entry 
)

Definition at line 201 of file rtlfuncs.h.

204{
205 PLIST_ENTRY OldFlink;
206#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
207 RtlpCheckListEntry(ListHead);
208#endif
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)
214 FatalListEntryError(ListHead, OldFlink, OldFlink->Flink);
215#endif
216 OldFlink->Blink = Entry;
217 ListHead->Flink = Entry;
218}
struct _LIST_ENTRY * Blink
Definition: typedefs.h:122
FORCEINLINE VOID FatalListEntryError(_In_ PVOID P1, _In_ PVOID P2, _In_ PVOID P3)
Definition: rtlfuncs.h:81

◆ InsertTailList()

FORCEINLINE VOID InsertTailList ( _Inout_ PLIST_ENTRY  ListHead,
_Inout_ __drv_aliasesMem PLIST_ENTRY  Entry 
)

Definition at line 180 of file rtlfuncs.h.

183{
184 PLIST_ENTRY OldBlink;
185#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
186 RtlpCheckListEntry(ListHead);
187#endif
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)
193 FatalListEntryError(OldBlink->Blink, OldBlink, ListHead);
194#endif
195 OldBlink->Flink = Entry;
196 ListHead->Blink = Entry;
197}

◆ IsListEmpty()

Definition at line 57 of file rtlfuncs.h.

59{
60 return (BOOLEAN)(ListHead->Flink == ListHead);
61}

◆ PopEntryList()

Definition at line 240 of file rtlfuncs.h.

242{
243 PSINGLE_LIST_ENTRY FirstEntry;
244 FirstEntry = ListHead->Next;
245 if (FirstEntry != NULL) {
246 ListHead->Next = FirstEntry->Next;
247 }
248 return FirstEntry;
249}
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
Definition: ntbasedef.h:628
struct _SINGLE_LIST_ENTRY * Next
Definition: ntbasedef.h:629

Referenced by FxIoTarget::_CancelSentRequests(), CdCreateIrpContext(), CdUnload(), ClearTTFontCache(), DcFreeAdapter(), DcSendPacket(), ExInterlockedPopEntryList(), ExitThreadCallback(), NvNetSendPacket(), FxPkgIo::ResetStateForRestart(), FxPkgIo::ResumeProcessingForPower(), FxPkgIo::StopProcessingForPower(), and UserDerefObjectCo().

◆ PushEntryList()

◆ RemoveEntryList()

FORCEINLINE BOOLEAN RemoveEntryList ( _In_ PLIST_ENTRY  Entry)

Definition at line 105 of file rtlfuncs.h.

107{
108 PLIST_ENTRY OldFlink;
109 PLIST_ENTRY OldBlink;
110
111 OldFlink = Entry->Flink;
112 OldBlink = Entry->Blink;
113#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
114#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
115 if (OldFlink == Entry || OldBlink == Entry)
116 FatalListEntryError(OldBlink, Entry, OldFlink);
117#endif
118 if (OldFlink->Blink != Entry || OldBlink->Flink != Entry)
119 FatalListEntryError(OldBlink, Entry, OldFlink);
120#endif
121 OldFlink->Blink = OldBlink;
122 OldBlink->Flink = OldFlink;
123 return (BOOLEAN)(OldFlink == OldBlink);
124}

◆ RemoveEntryListUnsafe()

FORCEINLINE BOOLEAN RemoveEntryListUnsafe ( _In_ PLIST_ENTRY  Entry)

Definition at line 65 of file rtlfuncs.h.

67{
68 PLIST_ENTRY OldFlink;
69 PLIST_ENTRY OldBlink;
70
71 OldFlink = Entry->Flink;
72 OldBlink = Entry->Blink;
73 OldFlink->Blink = OldBlink;
74 OldBlink->Flink = OldFlink;
75 return (BOOLEAN)(OldFlink == OldBlink);
76}

◆ RemoveHeadList()

FORCEINLINE PLIST_ENTRY RemoveHeadList ( _Inout_ PLIST_ENTRY  ListHead)

Definition at line 128 of file rtlfuncs.h.

130{
131 PLIST_ENTRY Flink;
133
134#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
135 RtlpCheckListEntry(ListHead);
136#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
137 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
138 FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
139#endif
140#endif
141 Entry = ListHead->Flink;
142 Flink = Entry->Flink;
143#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
144 if (Entry->Blink != ListHead || Flink->Blink != Entry)
145 FatalListEntryError(ListHead, Entry, Flink);
146#endif
147 ListHead->Flink = Flink;
148 Flink->Blink = ListHead;
149 return Entry;
150}

◆ RemoveTailList()

FORCEINLINE PLIST_ENTRY RemoveTailList ( _Inout_ PLIST_ENTRY  ListHead)

Definition at line 154 of file rtlfuncs.h.

156{
157 PLIST_ENTRY Blink;
159
160#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
161 RtlpCheckListEntry(ListHead);
162#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
163 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
164 FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
165#endif
166#endif
167 Entry = ListHead->Blink;
168 Blink = Entry->Blink;
169#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
170 if (Blink->Flink != Entry || Entry->Flink != ListHead)
171 FatalListEntryError(Blink, Entry, ListHead);
172#endif
173 ListHead->Blink = Blink;
174 Blink->Flink = ListHead;
175 return Entry;
176}

◆ RtlActiveEnumeratorsHashTable()

FORCEINLINE ULONG NTAPI RtlActiveEnumeratorsHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

Definition at line 3642 of file rtlfuncs.h.

3644{
3645 return HashTable->NumEnumerators;
3646}
Definition: hash.c:67

◆ RtlAllocateAndInitializeSid()

_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 
)

◆ RtlAreBitsSet()

_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlAreBitsSet ( _In_ PRTL_BITMAP  BitMapHeader,
_In_ ULONG  StartingIndex,
_In_ ULONG  Length 
)

Definition at line 459 of file bitmap.c.

463{
464 /* Verify parameters */
465 if ((StartingIndex + Length > BitMapHeader->SizeOfBitMap) ||
467 return FALSE;
468
469 return RtlpGetLengthOfRunSet(BitMapHeader, StartingIndex, Length) >= Length;
470}
static __inline BITMAP_INDEX RtlpGetLengthOfRunSet(_In_ PRTL_BITMAP BitMapHeader, _In_ BITMAP_INDEX StartingIndex, _In_ BITMAP_INDEX MaxLength)
Definition: bitmap.c:153
_In_ ULONG StartingIndex
Definition: rtlfuncs.h:395

◆ RtlAssert()

__analysis_noreturn NTSYSAPI VOID NTAPI RtlAssert ( _In_ PVOID  FailedAssertion,
_In_ PVOID  FileName,
_In_ ULONG  LineNumber,
_In_opt_z_ PSTR  Message 
)

◆ RtlCaptureContext()

NTSYSAPI VOID NTAPI RtlCaptureContext ( _Out_ PCONTEXT  ContextRecord)

◆ RtlCaptureStackBackTrace()

NTSYSAPI USHORT NTAPI RtlCaptureStackBackTrace ( _In_ ULONG  FramesToSkip,
_In_ ULONG  FramesToCapture,
_Out_writes_to_(FramesToCapture, return) PVOID BackTrace,
_Out_opt_ PULONG  BackTraceHash 
)

◆ RtlClearAllBits()

NTSYSAPI VOID NTAPI RtlClearAllBits ( _In_ PRTL_BITMAP  BitMapHeader)

Definition at line 272 of file bitmap.c.

274{
275 BITMAP_INDEX LengthInUlongs;
276
277 LengthInUlongs = (BitMapHeader->SizeOfBitMap + _BITCOUNT - 1) / _BITCOUNT;
278 RtlFillMemoryUlong(BitMapHeader->Buffer, LengthInUlongs * sizeof(BITMAP_INDEX), 0);
279}
#define RtlFillMemoryUlong(dst, len, val)
Definition: mkhive.h:55
#define _BITCOUNT
Definition: bitmap.c:62
ULONG BITMAP_INDEX
Definition: bitmap.c:64

◆ RtlClearBits()

NTSYSAPI VOID NTAPI RtlClearBits ( _In_ PRTL_BITMAP  BitMapHeader,
_In_range_(0, BitMapHeader->SizeOfBitMap - NumberToClear) ULONG  StartingIndex,
_In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG  NumberToClear 
)

Definition at line 314 of file bitmap.c.

318{
319 BITMAP_INDEX Bits, Mask;
321
322 ASSERT(StartingIndex + NumberToClear <= BitMapHeader->SizeOfBitMap);
323
324 /* Calculate buffer start and first bit index */
325 Buffer = &BitMapHeader->Buffer[StartingIndex / _BITCOUNT];
326 Bits = StartingIndex & (_BITCOUNT - 1);
327
328 /* Are we unaligned? */
329 if (Bits)
330 {
331 /* Create an inverse mask by shifting MAXINDEX */
332 Mask = MAXINDEX << Bits;
333
334 /* This is what's left in the first ULONG */
335 Bits = _BITCOUNT - Bits;
336
337 /* Even less bits to clear? */
338 if (NumberToClear < Bits)
339 {
340 /* Calculate how many bits are left */
341 Bits -= NumberToClear;
342
343 /* Fixup the mask on the high side */
344 Mask = Mask << Bits >> Bits;
345
346 /* Clear bits and return */
347 *Buffer &= ~Mask;
348 return;
349 }
350
351 /* Clear bits */
352 *Buffer &= ~Mask;
353
354 /* Update buffer and left bits */
355 Buffer++;
356 NumberToClear -= Bits;
357 }
358
359 /* Clear all full ULONGs */
360 RtlFillMemoryUlong(Buffer, NumberToClear >> 3, 0);
361 Buffer += NumberToClear / _BITCOUNT;
362
363 /* Clear what's left */
364 NumberToClear &= (_BITCOUNT - 1);
365 if (NumberToClear != 0)
366 {
367 Mask = MAXINDEX << NumberToClear;
368 *Buffer &= Mask;
369 }
370}
Definition: bufpool.h:45
unsigned int Mask
Definition: fpcontrol.c:82
ULONG * PBITMAP_BUFFER
Definition: bitmap.c:65
#define ASSERT(...)
Definition: bitmap.c:19
#define MAXINDEX
Definition: bitmap.c:63

Referenced by RtlFindSetBitsAndClear().

◆ RtlCmDecodeMemIoResource()

NTSYSAPI ULONGLONG NTAPI RtlCmDecodeMemIoResource ( _In_ struct _CM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
_Out_opt_ PULONGLONG  Start 
)

◆ RtlCmEncodeMemIoResource()

NTSYSAPI NTSTATUS NTAPI RtlCmEncodeMemIoResource ( _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR  Descriptor,
_In_ UCHAR  Type,
_In_ ULONGLONG  Length,
_In_ ULONGLONG  Start 
)

◆ RtlCompareAltitudes()

NTSYSAPI LONG NTAPI RtlCompareAltitudes ( _In_ PCUNICODE_STRING  Altitude1,
_In_ PCUNICODE_STRING  Altitude2 
)

◆ RtlCompareMemory()

_Must_inspect_result_ NTSYSAPI SIZE_T NTAPI RtlCompareMemory ( _In_ const VOID Source1,
_In_ const VOID Source2,
_In_ SIZE_T  Length 
)

◆ RtlCompareMemoryUlong()

◆ RtlCompressBuffer()

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 
)

◆ RtlContractHashTable()

NTSYSAPI BOOLEAN NTAPI RtlContractHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

◆ RtlConvertUlongToLargeInteger()

static __inline LARGE_INTEGER NTAPI_INLINE RtlConvertUlongToLargeInteger ( _In_ ULONG  UnsignedInteger)
static

Definition at line 2849 of file rtlfuncs.h.

2851{
2853 ret.QuadPart = UnsignedInteger;
2854 return ret;
2855}

◆ RtlConvertUlongToLuid()

FORCEINLINE LUID NTAPI_INLINE RtlConvertUlongToLuid ( _In_ ULONG  Val)

Definition at line 3541 of file rtlfuncs.h.

3543{
3544 LUID Luid;
3545
3546 Luid.LowPart = Val;
3547 Luid.HighPart = 0;
3548 return Luid;
3549}

Referenced by KsInstallBusEnumInterface(), KsRemoveBusEnumInterface(), SmpAcquirePrivilege(), and START_TEST().

◆ RtlCopyString()

NTSYSAPI VOID NTAPI RtlCopyString ( _Out_ PSTRING  DestinationString,
_In_opt_ const STRING SourceString 
)

◆ RtlCreateServiceSid()

NTSYSAPI NTSTATUS NTAPI RtlCreateServiceSid ( _In_ PUNICODE_STRING  ServiceName,
_Out_writes_bytes_opt_ *ServiceSidLength PSID  ServiceSid,
_Inout_ PULONG  ServiceSidLength 
)

Definition at line 412 of file sid.c.

416{
419}
#define UNIMPLEMENTED
Definition: debug.h:115
#define STATUS_NOT_IMPLEMENTED
Definition: ntstatus.h:239

◆ RtlCreateVirtualAccountSid()

NTSYSAPI NTSTATUS NTAPI RtlCreateVirtualAccountSid ( _In_ PCUNICODE_STRING  Name,
_In_ ULONG  BaseSubAuthority,
_Out_writes_bytes_ *SidLength PSID  Sid,
_Inout_ PULONG  SidLength 
)

◆ RtlDelete()

◆ RtlDeleteElementGenericTable()

◆ RtlDeleteElementGenericTableAvl()

NTSYSAPI BOOLEAN NTAPI RtlDeleteElementGenericTableAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_ PVOID  Buffer 
)

◆ RtlDeleteHashTable()

◆ RtlDeleteNoSplay()

NTSYSAPI VOID NTAPI RtlDeleteNoSplay ( _In_ PRTL_SPLAY_LINKS  Links,
_Inout_ PRTL_SPLAY_LINKS Root 
)

◆ RtlDestroyHeap()

NTSYSAPI PVOID NTAPI RtlDestroyHeap ( _In_ _Post_invalid_ PVOID  HeapHandle)

◆ RtlDowncaseUnicodeString()

◆ RtlEmptyBucketsHashTable()

FORCEINLINE ULONG NTAPI RtlEmptyBucketsHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

Definition at line 3624 of file rtlfuncs.h.

3626{
3627 return HashTable->TableSize - HashTable->NonEmptyBuckets;
3628}

◆ RtlEndEnumerationHashTable()

NTSYSAPI VOID NTAPI RtlEndEnumerationHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable,
_Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR  Enumerator 
)

◆ RtlEndWeakEnumerationHashTable()

NTSYSAPI VOID NTAPI RtlEndWeakEnumerationHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable,
_Inout_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR  Enumerator 
)

◆ RtlEnlargedIntegerMultiply()

static __inline LARGE_INTEGER NTAPI_INLINE RtlEnlargedIntegerMultiply ( _In_ LONG  Multiplicand,
_In_ LONG  Multiplier 
)
static

Definition at line 2943 of file rtlfuncs.h.

2946{
2948 ret.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
2949 return ret;
2950}
int64_t LONGLONG
Definition: typedefs.h:68

◆ RtlEnlargedUnsignedDivide()

static __inline ULONG NTAPI_INLINE RtlEnlargedUnsignedDivide ( _In_ ULARGE_INTEGER  Dividend,
_In_ ULONG  Divisor,
_Out_opt_ PULONG  Remainder 
)
static

Definition at line 2889 of file rtlfuncs.h.

2893{
2894 if (Remainder)
2895 *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
2896 return (ULONG)(Dividend.QuadPart / Divisor);
2897}
_In_ LARGE_INTEGER Divisor
Definition: rtlfuncs.h:3044
_In_ LARGE_INTEGER _Out_opt_ PLARGE_INTEGER Remainder
Definition: rtlfuncs.h:3045

◆ RtlEnlargedUnsignedMultiply()

static __inline LARGE_INTEGER NTAPI_INLINE RtlEnlargedUnsignedMultiply ( _In_ ULONG  Multiplicand,
_In_ ULONG  Multiplier 
)
static

Definition at line 2930 of file rtlfuncs.h.

2933{
2935 ret.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
2936 return ret;
2937}

◆ RtlEnumerateEntryHashTable()

◆ RtlEnumerateGenericTable()

◆ RtlEnumerateGenericTableAvl()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_ BOOLEAN  Restart 
)

◆ RtlEnumerateGenericTableLikeADirectory()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableLikeADirectory ( _In_ PRTL_AVL_TABLE  Table,
_In_opt_ PRTL_AVL_MATCH_FUNCTION  MatchFunction,
_In_opt_ PVOID  MatchData,
_In_ ULONG  NextFlag,
_Inout_ PVOID RestartKey,
_Inout_ PULONG  DeleteCount,
_In_ PVOID  Buffer 
)

◆ RtlEnumerateGenericTableWithoutSplaying()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableWithoutSplaying ( _In_ PRTL_GENERIC_TABLE  Table,
_Inout_ PVOID RestartKey 
)

Referenced by CdGetNextFcb().

◆ RtlEnumerateGenericTableWithoutSplayingAvl()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlEnumerateGenericTableWithoutSplayingAvl ( _In_ PRTL_AVL_TABLE  Table,
_Inout_ PVOID RestartKey 
)

◆ RtlEqualSid()

_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlEqualSid ( _In_ PSID  Sid1,
_In_ PSID  Sid2 
)

◆ RtlExpandHashTable()

NTSYSAPI BOOLEAN NTAPI RtlExpandHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

◆ RtlExtendedIntegerMultiply()

NTSYSAPI LARGE_INTEGER NTAPI RtlExtendedIntegerMultiply ( _In_ LARGE_INTEGER  Multiplicand,
_In_ LONG  Multiplier 
)

◆ RtlExtendedLargeIntegerDivide()

NTSYSAPI LARGE_INTEGER NTAPI RtlExtendedLargeIntegerDivide ( _In_ LARGE_INTEGER  Dividend,
_In_ ULONG  Divisor,
_Out_opt_ PULONG  Remainder 
)

◆ RtlFillMemoryUlong()

NTSYSAPI VOID NTAPI RtlFillMemoryUlong ( _Out_writes_bytes_all_(Length) PVOID  Destination,
_In_ SIZE_T  Length,
_In_ ULONG  Pattern 
)

◆ RtlFillMemoryUlonglong()

NTSYSAPI VOID NTAPI RtlFillMemoryUlonglong ( _Out_writes_bytes_all_(Length) PVOID  Destination,
_In_ SIZE_T  Length,
_In_ ULONGLONG  Pattern 
)

Referenced by MiCreatePagingFileMap().

◆ RtlFindClearRuns()

NTSYSAPI ULONG NTAPI RtlFindClearRuns ( _In_ PRTL_BITMAP  BitMapHeader,
_Out_writes_to_(SizeOfRunArray, return) PRTL_BITMAP_RUN  RunArray,
_In_range_(>, 0) ULONG  SizeOfRunArray,
_In_ BOOLEAN  LocateLongestRuns 
)

◆ RtlFindClosestEncodableLength()

NTSYSAPI NTSTATUS NTAPI RtlFindClosestEncodableLength ( _In_ ULONGLONG  SourceLength,
_Out_ PULONGLONG  TargetLength 
)

◆ RtlFindFirstRunClear()

◆ RtlFindLastBackwardRunClear()

NTSYSAPI ULONG NTAPI RtlFindLastBackwardRunClear ( _In_ PRTL_BITMAP  BitMapHeader,
_In_ ULONG  FromIndex,
_Out_ PULONG  StartingRunIndex 
)

◆ RtlFindLongestRunClear()

NTSYSAPI ULONG NTAPI RtlFindLongestRunClear ( _In_ PRTL_BITMAP  BitMapHeader,
_Out_ PULONG  StartingIndex 
)

◆ RtlFindNextForwardRunClear()

NTSYSAPI ULONG NTAPI RtlFindNextForwardRunClear ( _In_ PRTL_BITMAP  BitMapHeader,
_In_ ULONG  FromIndex,
_Out_ PULONG  StartingRunIndex 
)

◆ RtlFreeSid()

NTSYSAPI PVOID NTAPI RtlFreeSid ( _In_ _Post_invalid_ PSID  Sid)

◆ RtlGetAce()

NTSYSAPI NTSTATUS NTAPI RtlGetAce ( _In_ PACL  Acl,
_In_ ULONG  AceIndex,
_Outptr_ PVOID Ace 
)

◆ RtlGetCallersAddress()

NTSYSAPI VOID NTAPI RtlGetCallersAddress ( _Out_ PVOID CallersAddress,
_Out_ PVOID CallersCaller 
)

Definition at line 22 of file except.c.

25{
27}
#define ASSERT(a)
Definition: mode.c:44

Referenced by CmpLockRegistryExclusive(), and RxPurgeFcbInSystemCache().

◆ RtlGetCompressionWorkSpaceSize()

NTSYSAPI NTSTATUS NTAPI RtlGetCompressionWorkSpaceSize ( _In_ USHORT  CompressionFormatAndEngine,
_Out_ PULONG  CompressBufferWorkSpaceSize,
_Out_ PULONG  CompressFragmentWorkSpaceSize 
)

◆ RtlGetDaclSecurityDescriptor()

NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor ( _In_ PSECURITY_DESCRIPTOR  SecurityDescriptor,
_Out_ PBOOLEAN  DaclPresent,
_Out_ PACL Dacl,
_Out_ PBOOLEAN  DaclDefaulted 
)

◆ RtlGetElementGenericTable()

◆ RtlGetElementGenericTableAvl()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlGetElementGenericTableAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_ ULONG  I 
)

◆ RtlGetEnabledExtendedFeatures()

NTSYSAPI ULONG64 NTAPI RtlGetEnabledExtendedFeatures ( IN ULONG64  FeatureMask)

◆ RtlGetNextEntryHashTable()

◆ RtlGetProductInfo()

NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo ( _In_ ULONG  OSMajorVersion,
_In_ ULONG  OSMinorVersion,
_In_ ULONG  SpMajorVersion,
_In_ ULONG  SpMinorVersion,
_Out_ PULONG  ReturnedProductType 
)

◆ RtlIdnToAscii()

NTSYSAPI NTSTATUS NTAPI RtlIdnToAscii ( _In_ ULONG  Flags,
_In_ PCWSTR  SourceString,
_In_ LONG  SourceStringLength,
_Out_writes_to_ *, *DestinationStringLength PWSTR  DestinationString,
_Inout_ PLONG  DestinationStringLength 
)

◆ RtlIdnToNameprepUnicode()

NTSYSAPI NTSTATUS NTAPI RtlIdnToNameprepUnicode ( _In_ ULONG  Flags,
_In_ PCWSTR  SourceString,
_In_ LONG  SourceStringLength,
_Out_writes_to_ *, *DestinationStringLength PWSTR  DestinationString,
_Inout_ PLONG  DestinationStringLength 
)

◆ RtlIdnToUnicode()

NTSYSAPI NTSTATUS NTAPI RtlIdnToUnicode ( IN ULONG  Flags,
IN PCWSTR  SourceString,
IN LONG  SourceStringLength,
OUT PWSTR  DestinationString,
IN OUT PLONG  DestinationStringLength 
)

◆ RtlInitEnumerationHashTable()

NTSYSAPI BOOLEAN NTAPI RtlInitEnumerationHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable,
_Out_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR  Enumerator 
)

◆ RtlInitHashTableContext()

FORCEINLINE VOID NTAPI RtlInitHashTableContext ( _Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT  Context)

Definition at line 3575 of file rtlfuncs.h.

3577{
3578 Context->ChainHead = NULL;
3579 Context->PrevLinkage = NULL;
3580}

◆ RtlInitHashTableContextFromEnumerator()

FORCEINLINE VOID NTAPI RtlInitHashTableContextFromEnumerator ( _Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT  Context,
_In_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR  Enumerator 
)

Definition at line 3585 of file rtlfuncs.h.

3588{
3589 Context->ChainHead = Enumerator->ChainHead;
3590 Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
3591}

◆ RtlInitWeakEnumerationHashTable()

NTSYSAPI BOOLEAN NTAPI RtlInitWeakEnumerationHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable,
_Out_ PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR  Enumerator 
)

◆ RtlInsertElementGenericTable()

◆ RtlInsertElementGenericTableAvl()

NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_reads_bytes_(BufferSize) PVOID  Buffer,
_In_ CLONG  BufferSize,
_Out_opt_ PBOOLEAN  NewElement 
)

◆ RtlInsertElementGenericTableFull()

NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableFull ( _In_ PRTL_GENERIC_TABLE  Table,
_In_reads_bytes_(BufferSize) PVOID  Buffer,
_In_ CLONG  BufferSize,
_Out_opt_ PBOOLEAN  NewElement,
_In_ PVOID  NodeOrParent,
_In_ TABLE_SEARCH_RESULT  SearchResult 
)

◆ RtlInsertElementGenericTableFullAvl()

NTSYSAPI PVOID NTAPI RtlInsertElementGenericTableFullAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_reads_bytes_(BufferSize) PVOID  Buffer,
_In_ CLONG  BufferSize,
_Out_opt_ PBOOLEAN  NewElement,
_In_ PVOID  NodeOrParent,
_In_ TABLE_SEARCH_RESULT  SearchResult 
)

Referenced by ApphelpCacheUpdateEntry().

◆ RtlInsertEntryHashTable()

◆ RtlIoDecodeMemIoResource()

NTSYSAPI ULONGLONG NTAPI RtlIoDecodeMemIoResource ( _In_ struct _IO_RESOURCE_DESCRIPTOR Descriptor,
_Out_opt_ PULONGLONG  Alignment,
_Out_opt_ PULONGLONG  MinimumAddress,
_Out_opt_ PULONGLONG  MaximumAddress 
)

◆ RtlIoEncodeMemIoResource()

NTSYSAPI NTSTATUS NTAPI RtlIoEncodeMemIoResource ( _In_ struct _IO_RESOURCE_DESCRIPTOR Descriptor,
_In_ UCHAR  Type,
_In_ ULONGLONG  Length,
_In_ ULONGLONG  Alignment,
_In_ ULONGLONG  MinimumAddress,
_In_ ULONGLONG  MaximumAddress 
)

◆ RtlIsGenericTableEmpty()

◆ RtlIsGenericTableEmptyAvl()

_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlIsGenericTableEmptyAvl ( _In_ PRTL_AVL_TABLE  Table)

◆ RtlIsNormalizedString()

NTSYSAPI NTSTATUS NTAPI RtlIsNormalizedString ( _In_ ULONG  NormForm,
_In_ PCWSTR  SourceString,
_In_ LONG  SourceStringLength,
_Out_ PBOOLEAN  Normalized 
)

◆ RtlIsNtDdiVersionAvailable()

BOOLEAN RTLVERLIB_DDI() RtlIsNtDdiVersionAvailable ( _In_ ULONG  Version)

◆ RtlIsServicePackVersionInstalled()

BOOLEAN RTLVERLIB_DDI() RtlIsServicePackVersionInstalled ( _In_ ULONG  Version)

◆ RtlLargeIntegerArithmeticShift()

static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerArithmeticShift ( _In_ LARGE_INTEGER  LargeInteger,
_In_ CCHAR  ShiftCount 
)
static

Definition at line 3106 of file rtlfuncs.h.

3109{
3111 ret.QuadPart = LargeInteger.QuadPart >> ShiftCount;
3112 return ret;
3113}

◆ RtlLargeIntegerNegate()

static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerNegate ( _In_ LARGE_INTEGER  Subtrahend)
static

Definition at line 2903 of file rtlfuncs.h.

2905{
2906 LARGE_INTEGER Difference;
2907
2908 Difference.QuadPart = -Subtrahend.QuadPart;
2909 return Difference;
2910}

◆ RtlLargeIntegerShiftLeft()

static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerShiftLeft ( _In_ LARGE_INTEGER  LargeInteger,
_In_ CCHAR  ShiftCount 
)
static

Definition at line 2861 of file rtlfuncs.h.

2864{
2866
2867 Result.QuadPart = LargeInteger.QuadPart << ShiftCount;
2868 return Result;
2869}
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

◆ RtlLargeIntegerShiftRight()

static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerShiftRight ( _In_ LARGE_INTEGER  LargeInteger,
_In_ CCHAR  ShiftCount 
)
static

Definition at line 2875 of file rtlfuncs.h.

2878{
2880
2881 Result.QuadPart = (ULONG64)LargeInteger.QuadPart >> ShiftCount;
2882 return Result;
2883}
unsigned __int64 ULONG64
Definition: imports.h:198

◆ RtlLargeIntegerSubtract()

static __inline LARGE_INTEGER NTAPI_INLINE RtlLargeIntegerSubtract ( _In_ LARGE_INTEGER  Minuend,
_In_ LARGE_INTEGER  Subtrahend 
)
static

Definition at line 2916 of file rtlfuncs.h.

2919{
2920 LARGE_INTEGER Difference;
2921
2922 Difference.QuadPart = Minuend.QuadPart - Subtrahend.QuadPart;
2923 return Difference;
2924}

◆ RtlLookupElementGenericTable()

◆ RtlLookupElementGenericTableAvl()

◆ RtlLookupElementGenericTableFull()

NTSYSAPI PVOID NTAPI RtlLookupElementGenericTableFull ( _In_ PRTL_GENERIC_TABLE  Table,
_In_ PVOID  Buffer,
_Out_ PVOID NodeOrParent,
_Out_ TABLE_SEARCH_RESULT SearchResult 
)

◆ RtlLookupElementGenericTableFullAvl()

NTSYSAPI PVOID NTAPI RtlLookupElementGenericTableFullAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_ PVOID  Buffer,
_Out_ PVOID NodeOrParent,
_Out_ TABLE_SEARCH_RESULT SearchResult 
)

Referenced by ApphelpCacheUpdateEntry().

◆ RtlLookupEntryHashTable()

◆ RtlLookupFirstMatchingElementGenericTableAvl()

_Must_inspect_result_ NTSYSAPI PVOID NTAPI RtlLookupFirstMatchingElementGenericTableAvl ( _In_ PRTL_AVL_TABLE  Table,
_In_ PVOID  Buffer,
_Out_ PVOID RestartKey 
)

◆ RtlNonEmptyBucketsHashTable()

FORCEINLINE ULONG NTAPI RtlNonEmptyBucketsHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

Definition at line 3615 of file rtlfuncs.h.

3617{
3618 return HashTable->NonEmptyBuckets;
3619}

◆ RtlNumberGenericTableElements()

◆ RtlNumberGenericTableElementsAvl()

NTSYSAPI ULONG NTAPI RtlNumberGenericTableElementsAvl ( _In_ PRTL_AVL_TABLE  Table)

Referenced by ApphelpCacheUpdateEntry().

◆ RtlNumberOfClearBits()

NTSYSAPI ULONG NTAPI RtlNumberOfClearBits ( _In_ PRTL_BITMAP  BitMapHeader)

Definition at line 500 of file bitmap.c.

502{
503 /* Do some math */
504 return BitMapHeader->SizeOfBitMap - RtlNumberOfSetBits(BitMapHeader);
505}
BITMAP_INDEX NTAPI RtlNumberOfSetBits(_In_ PRTL_BITMAP BitMapHeader)
Definition: bitmap.c:474

◆ RtlNumberOfSetBits()

NTSYSAPI ULONG NTAPI RtlNumberOfSetBits ( _In_ PRTL_BITMAP  BitMapHeader)

Definition at line 474 of file bitmap.c.

476{
477 PUCHAR Byte, MaxByte;
478 BITMAP_INDEX BitCount = 0;
479 ULONG Shift;
480
481 Byte = (PUCHAR)BitMapHeader->Buffer;
482 MaxByte = Byte + BitMapHeader->SizeOfBitMap / 8;
483
484 while (Byte < MaxByte)
485 {
486 BitCount += BitCountTable[*Byte++];
487 }
488
489 if (BitMapHeader->SizeOfBitMap & 7)
490 {
491 Shift = 8 - (BitMapHeader->SizeOfBitMap & 7);
492 BitCount += BitCountTable[((*Byte) << Shift) & 0xFF];
493 }
494
495 return BitCount;
496}
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
unsigned char Byte
Definition: zlib.h:37
static const UCHAR BitCountTable[256]
Definition: bitmap.c:73
_In_ ULONG Shift
Definition: rtlfuncs.h:2681

Referenced by RtlNumberOfClearBits().

◆ RtlpCheckListEntry()

FORCEINLINE VOID RtlpCheckListEntry ( _In_ PLIST_ENTRY  Entry)

Definition at line 95 of file rtlfuncs.h.

97{
98 if (Entry->Flink->Blink != Entry || Entry->Blink->Flink != Entry)
99 FatalListEntryError(Entry->Blink, Entry, Entry->Flink);
100}

Referenced by AppendTailList(), InsertHeadList(), InsertTailList(), RemoveHeadList(), and RemoveTailList().

◆ RtlRealPredecessor()

◆ RtlRealSuccessor()

◆ RtlReleaseHashTableContext()

FORCEINLINE VOID NTAPI RtlReleaseHashTableContext ( _Inout_ PRTL_DYNAMIC_HASH_TABLE_CONTEXT  Context)

Definition at line 3596 of file rtlfuncs.h.

3598{
3600 return;
3601}

◆ RtlRemoveEntryHashTable()

◆ RtlSecondsSince1970ToTime()

NTSYSAPI VOID NTAPI RtlSecondsSince1970ToTime ( _In_ ULONG  ElapsedSeconds,
_Out_ PLARGE_INTEGER  Time 
)

◆ RtlSecondsSince1980ToTime()

NTSYSAPI VOID NTAPI RtlSecondsSince1980ToTime ( _In_ ULONG  ElapsedSeconds,
_Out_ PLARGE_INTEGER  Time 
)

◆ RtlSecureZeroMemory()

FORCEINLINE PVOID RtlSecureZeroMemory ( _Out_writes_bytes_all_(Size) PVOID  Pointer,
_In_ SIZE_T  Size 
)

Definition at line 3125 of file rtlfuncs.h.

3128{
3129 volatile char* vptr = (volatile char*)Pointer;
3130#if defined(_M_AMD64)
3131 __stosb((PUCHAR)vptr, 0, Size);
3132#else
3133 char * endptr = (char *)vptr + Size;
3134 while (vptr < endptr) {
3135 *vptr = 0; vptr++;
3136 }
3137#endif
3138 return Pointer;
3139}
PPC_QUAL void __stosb(unsigned char *Dest, const unsigned char Data, unsigned long Count)
Definition: intrin_ppc.h:306
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533

Referenced by KsecDecryptMemoryAes(), KsecDecryptMemoryDes3(), KsecDeviceControl(), KsecEncryptMemoryAes(), KsecEncryptMemoryDes3(), KsecGetAesKey(), KsecGetDes3Key(), KsecGetKeyData(), KsecInitializeEncryptionSupport(), NtfsWriteDisk(), OHCI_AllocateTD(), OHCI_ControlTransfer(), and START_TEST().

◆ RtlSetAllBits()

NTSYSAPI VOID NTAPI RtlSetAllBits ( _In_ PRTL_BITMAP  BitMapHeader)

Definition at line 283 of file bitmap.c.

285{
286 BITMAP_INDEX LengthInUlongs;
287
288 LengthInUlongs = (BitMapHeader->SizeOfBitMap + _BITCOUNT - 1) / _BITCOUNT;
289 RtlFillMemoryUlong(BitMapHeader->Buffer, LengthInUlongs * sizeof(BITMAP_INDEX), ~0);
290}

◆ RtlSetBit()

NTSYSAPI VOID NTAPI RtlSetBit ( _In_ PRTL_BITMAP  BitMapHeader,
_In_range_(<, BitMapHeader->SizeOfBitMap) ULONG  BitNumber 
)

Definition at line 304 of file bitmap.c.

307{
308 ASSERT(BitNumber <= BitMapHeader->SizeOfBitMap);
309 BitMapHeader->Buffer[BitNumber / _BITCOUNT] |= ((BITMAP_INDEX)1 << (BitNumber & (_BITCOUNT - 1)));
310}

Referenced by AllocateAnyPort(), AllocatePortFromRange(), CcpReferenceCache(), CcpReferenceCacheExclusive(), LdrpInitializeProcess(), MiAllocatePoolPages(), RtlpInsertFreeBlockHelper(), scrub_raid5_stripe(), and scrub_raid6_stripe().

◆ RtlSetBits()

NTSYSAPI VOID NTAPI RtlSetBits ( _In_ PRTL_BITMAP  BitMapHeader,
_In_range_(0, BitMapHeader->SizeOfBitMap - NumberToSet) ULONG  StartingIndex,
_In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG  NumberToSet 
)

Definition at line 374 of file bitmap.c.

378{
379 BITMAP_INDEX Bits, Mask;
381
382 ASSERT(StartingIndex + NumberToSet <= BitMapHeader->SizeOfBitMap);
383
384 /* Calculate buffer start and first bit index */
385 Buffer = &BitMapHeader->Buffer[StartingIndex / _BITCOUNT];
386 Bits = StartingIndex & (_BITCOUNT - 1);
387
388 /* Are we unaligned? */
389 if (Bits)
390 {
391 /* Create a mask by shifting MAXINDEX */
392 Mask = MAXINDEX << Bits;
393
394 /* This is what's left in the first ULONG */
395 Bits = _BITCOUNT - Bits;
396
397 /* Even less bits to clear? */
398 if (NumberToSet < Bits)
399 {
400 /* Calculate how many bits are left */
401 Bits -= NumberToSet;
402
403 /* Fixup the mask on the high side */
404 Mask = Mask << Bits >> Bits;
405
406 /* Set bits and return */
407 *Buffer |= Mask;
408 return;
409 }
410
411 /* Set bits */
412 *Buffer |= Mask;
413
414 /* Update buffer and left bits */
415 Buffer++;
416 NumberToSet -= Bits;
417 }
418
419 /* Set all full ULONGs */
420 RtlFillMemoryUlong(Buffer, NumberToSet >> 3, MAXINDEX);
421 Buffer += NumberToSet / _BITCOUNT;
422
423 /* Set what's left */
424 NumberToSet &= (_BITCOUNT - 1);
425 if (NumberToSet != 0)
426 {
427 Mask = MAXINDEX << NumberToSet;
428 *Buffer |= ~Mask;
429 }
430}

Referenced by RtlFindClearBitsAndSet().

◆ RtlSplay()

◆ RtlSubAuthorityCountSid()

NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid ( _In_ PSID  Sid)

◆ RtlSubAuthoritySid()

NTSYSAPI PULONG NTAPI RtlSubAuthoritySid ( _In_ PSID  Sid,
_In_ ULONG  SubAuthority 
)

◆ RtlSubtreePredecessor()

◆ RtlSubtreeSuccessor()

◆ RtlTestBit()

_Must_inspect_result_ NTSYSAPI BOOLEAN NTAPI RtlTestBit ( _In_ PRTL_BITMAP  BitMapHeader,
_In_range_(<, BitMapHeader->SizeOfBitMap) ULONG  BitNumber 
)

Definition at line 434 of file bitmap.c.

437{
438 ASSERT(BitNumber < BitMapHeader->SizeOfBitMap);
439 return (BitMapHeader->Buffer[BitNumber / _BITCOUNT] >> (BitNumber & (_BITCOUNT - 1))) & 1;
440}

Referenced by CcpAllocateCacheSections(), CcpMapData(), CcRemapBcb(), CcRepinBcb(), GdiPoolFree(), MiFreePoolPages(), MiGetPfnEntry(), RtlpInsertFreeBlockHelper(), RtlpRemoveFreeBlock(), and RtlpValidateHeap().

◆ RtlTimeToTimeFields()

NTSYSAPI VOID NTAPI RtlTimeToTimeFields ( _In_ PLARGE_INTEGER  Time,
_Out_ PTIME_FIELDS  TimeFields 
)

◆ RtlTotalBucketsHashTable()

FORCEINLINE ULONG NTAPI RtlTotalBucketsHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

Definition at line 3606 of file rtlfuncs.h.

3608{
3609 return HashTable->TableSize;
3610}

◆ RtlTotalEntriesHashTable()

FORCEINLINE ULONG NTAPI RtlTotalEntriesHashTable ( _In_ PRTL_DYNAMIC_HASH_TABLE  HashTable)

Definition at line 3633 of file rtlfuncs.h.

3635{
3636 return HashTable->NumEntries;
3637}

◆ RtlUlongByteSwap()

NTSYSAPI ULONG FASTCALL RtlUlongByteSwap ( _In_ ULONG  Source)

◆ RtlUlonglongByteSwap()

NTSYSAPI ULONGLONG FASTCALL RtlUlonglongByteSwap ( _In_ ULONGLONG  Source)

◆ RtlUpcaseUnicodeString()

◆ RtlUshortByteSwap()

NTSYSAPI USHORT FASTCALL RtlUshortByteSwap ( _In_ USHORT  Source)

◆ RtlValidateUnicodeString()

_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString ( _In_ ULONG  Flags,
_In_ PCUNICODE_STRING  String 
)

Definition at line 2605 of file unicode.c.

2608{
2609 /* In Windows <= 2003 no flags are supported yet! */
2610 if (Flags != 0)
2612
2613 /* NOTE: a NULL Unicode string pointer is considered to be a valid one! */
2614 if (String == NULL)
2615 {
2616 return STATUS_SUCCESS;
2617 }
2618 else if (!((String->Buffer == NULL) && (String->Length != 0 || String->MaximumLength != 0)) &&
2619 (String->Length % sizeof(WCHAR) == 0) &&
2620 (String->MaximumLength % sizeof(WCHAR) == 0) &&
2621 (String->Length <= String->MaximumLength))
2622 {
2623 return STATUS_SUCCESS;
2624 }
2625 else
2626 {
2628 }
2629}
#define STATUS_SUCCESS
Definition: shellext.h:65
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

◆ RtlWalkFrameChain()

NTSYSAPI ULONG NTAPI RtlWalkFrameChain ( _Out_writes_(Count -(Flags > > RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT)) PVOID Callers,
_In_ ULONG  Count,
_In_ ULONG  Flags 
)

◆ RtlWeaklyEnumerateEntryHashTable()

Variable Documentation

◆ AbsoluteSecurityDescriptor

Definition at line 2450 of file rtlfuncs.h.

◆ AbsoluteSecurityDescriptorSize

_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG AbsoluteSecurityDescriptorSize

Definition at line 2451 of file rtlfuncs.h.

◆ AccessMask

Definition at line 1879 of file rtlfuncs.h.

◆ AceFlags

_In_ ULONG _In_ ULONG AceFlags

Definition at line 1889 of file rtlfuncs.h.

◆ AceIndex

◆ AceListLength

_In_ ULONG _In_ ULONG _In_ ULONG AceListLength

Definition at line 1854 of file rtlfuncs.h.

Referenced by RtlAddAce(), and RtlpAddData().

◆ AceRevision

_In_ ULONG AceRevision

Definition at line 1851 of file rtlfuncs.h.

◆ AclLength

◆ AclRevision

◆ Addend2

◆ AllocateDestinationString

_In_ PSID _In_ BOOLEAN AllocateDestinationString

Definition at line 417 of file rtlfuncs.h.

◆ AllocateRoutine

◆ AllowExtendedCharacters

_In_ BOOLEAN AllowExtendedCharacters

Definition at line 1584 of file rtlfuncs.h.

Referenced by RtlGenerate8dot3Name().

◆ Base

Definition at line 1017 of file rtlfuncs.h.

◆ BaseAddress

Definition at line 1344 of file rtlfuncs.h.

◆ Buffer

Definition at line 2976 of file rtlfuncs.h.

◆ BufferLength

◆ BufferSize

Initial value:
{
UnicodeString->Length = 0

Definition at line 2977 of file rtlfuncs.h.

◆ BytesInCustomCPString

_In_ ULONG _Out_opt_ PULONG BytesInCustomCPString

Definition at line 1947 of file rtlfuncs.h.

◆ BytesInMultiByteString

* BytesInMultiByteString PCHAR _In_ ULONG _Out_opt_ PULONG BytesInMultiByteString

Definition at line 1502 of file rtlfuncs.h.

◆ BytesInOemString

* BytesInOemString PCHAR _In_ ULONG _Out_opt_ PULONG BytesInOemString

Definition at line 1553 of file rtlfuncs.h.

◆ BytesInUnicodeString

_In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInUnicodeString

Definition at line 1500 of file rtlfuncs.h.

◆ CaseInSensitive

_In_ BOOLEAN CaseInSensitive

Definition at line 504 of file rtlfuncs.h.

◆ CaseInsensitive

_In_ const STRING _In_ BOOLEAN CaseInsensitive

Definition at line 1378 of file rtlfuncs.h.

◆ CaseInsensitiveIndex

_In_ PUNICODE_STRING _In_ ULONG CaseInsensitiveIndex

Definition at line 1682 of file rtlfuncs.h.

Referenced by NpFindPrefix(), NpFindRelativePrefix(), and RtlFindUnicodePrefix().

◆ ChunkBuffer

Definition at line 2276 of file rtlfuncs.h.

◆ ChunkSize

◆ CodePageTable

_Out_ PCPTABLEINFO CodePageTable

Definition at line 1979 of file rtlfuncs.h.

◆ CommitSize

Definition at line 2169 of file rtlfuncs.h.

◆ CompareRoutine

◆ CompressedBuffer

_Inout_ PUCHAR * CompressedBuffer

Definition at line 2274 of file rtlfuncs.h.

Referenced by RtlCompressBuffer(), and RtlDecompressBuffer().

◆ CompressedBufferSize

_In_ ULONG _In_ ULONG CompressedBufferSize

Definition at line 2251 of file rtlfuncs.h.

◆ CompressedDataInfo

Definition at line 2301 of file rtlfuncs.h.

◆ CompressedTailSize

_In_ ULONG _In_ ULONG _In_ ULONG CompressedTailSize

Definition at line 2300 of file rtlfuncs.h.

◆ ConditionMask

_In_ ULONG _In_ ULONGLONG ConditionMask

Definition at line 1064 of file rtlfuncs.h.

◆ Context

Definition at line 784 of file rtlfuncs.h.

◆ Dacl

◆ DaclDefaulted

Definition at line 822 of file rtlfuncs.h.

◆ DaclPresent

_In_ BOOLEAN DaclPresent

Definition at line 820 of file rtlfuncs.h.

◆ DaclSize

◆ DestinationString

Definition at line 415 of file rtlfuncs.h.

◆ DestinationStringLength

_In_ PCWSTR _In_ LONG _Out_writes_to_ DestinationStringLength PWSTR _Inout_ PLONG DestinationStringLength

Definition at line 2576 of file rtlfuncs.h.

◆ Divisor

◆ DosName

◆ ElapsedSeconds

_Out_ PULONG ElapsedSeconds

Definition at line 1708 of file rtlfuncs.h.

◆ EndOfCompressedBufferPlus1

_Inout_ PUCHAR _In_ PUCHAR EndOfCompressedBufferPlus1

Definition at line 2275 of file rtlfuncs.h.

◆ EntryContext

Definition at line 782 of file rtlfuncs.h.

◆ Environment

◆ FinalUncompressedSize

_In_ ULONG _In_ ULONG _Out_ PULONG FinalUncompressedSize

Definition at line 2252 of file rtlfuncs.h.

◆ Flags

Definition at line 1334 of file rtlfuncs.h.

◆ FreeRoutine

◆ FullName

◆ GenericMapping

◆ Group

_Out_ PSID* Group

Definition at line 2423 of file rtlfuncs.h.

◆ GroupDefaulted

_Out_ PSID _Out_ PBOOLEAN GroupDefaulted

Definition at line 2424 of file rtlfuncs.h.

◆ Guid

Definition at line 339 of file rtlfuncs.h.

◆ HashAlgorithm

◆ HashValue

◆ HeapBase

_In_opt_ PVOID HeapBase

Definition at line 2167 of file rtlfuncs.h.

Referenced by MmHapHeapAllocatorExtend(), and RtlFreeHeap().

◆ HintIndex

◆ IdentifierAuthority

_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority

Definition at line 1793 of file rtlfuncs.h.

◆ InitFn

◆ Length

Definition at line 396 of file rtlfuncs.h.

◆ Lock

◆ MaxBytesInCustomCPString

_In_ ULONG MaxBytesInCustomCPString

Definition at line 1956 of file rtlfuncs.h.

◆ MaxBytesInMultiByteString

*BytesInMultiByteString PCHAR _In_ ULONG MaxBytesInMultiByteString

Definition at line 1528 of file rtlfuncs.h.

◆ MaxBytesInOemString

*BytesInOemString PCHAR _In_ ULONG MaxBytesInOemString

Definition at line 1561 of file rtlfuncs.h.

◆ MaxBytesInUnicodeString

_In_ ULONG MaxBytesInUnicodeString

Definition at line 1499 of file rtlfuncs.h.

◆ MaximumLength

Definition at line 2980 of file rtlfuncs.h.

◆ MultiByteString

◆ Name8dot3

◆ NameContainsSpaces

Definition at line 1607 of file rtlfuncs.h.

◆ NewSid

_In_ PSID _In_ PSID NewSid

Definition at line 2814 of file rtlfuncs.h.

Referenced by SepCaptureSid().

◆ NumberToFind

_In_ ULONG NumberToFind

◆ NumChanges

_In_ PSID _In_ PSID _Out_ ULONG* NumChanges

Definition at line 2815 of file rtlfuncs.h.

◆ OemName

Definition at line 1606 of file rtlfuncs.h.

◆ OemString

◆ OldSid

_In_ PSID OldSid

Definition at line 2813 of file rtlfuncs.h.

◆ Owner

◆ OwnerDefaulted

_Out_ PSID _Out_ PBOOLEAN OwnerDefaulted

Definition at line 1917 of file rtlfuncs.h.

◆ OwnerSize

◆ Parameter

◆ Parameters

◆ Path

_In_ PCWSTR Path

Definition at line 471 of file rtlfuncs.h.

◆ Prefix

◆ PrefixTableEntry

◆ PrimaryGroup

◆ PrimaryGroupSize

◆ QuadPart

◆ QueryTable

Definition at line 783 of file rtlfuncs.h.

◆ Remainder

◆ RequiredInformation

_In_ ULONG _In_ SECURITY_INFORMATION RequiredInformation

Definition at line 1035 of file rtlfuncs.h.

◆ ReserveSize

Definition at line 2168 of file rtlfuncs.h.

Referenced by RtlDebugCreateHeap(), RtlpCreateUnCommittedRange(), and RtlpExtendHeap().

◆ Restart

_In_ BOOLEAN Restart

Definition at line 1691 of file rtlfuncs.h.

◆ ret

return ret

Definition at line 3090 of file rtlfuncs.h.

◆ Revision

_In_ ULONG Revision

Definition at line 546 of file rtlfuncs.h.

◆ Sacl

◆ SaclDefaulted

◆ SaclPresent

◆ SaclSize

◆ SecurityDescriptorLength

_In_ ULONG SecurityDescriptorLength

Definition at line 1034 of file rtlfuncs.h.

◆ SelfRelativeSecurityDescriptor

Definition at line 2441 of file rtlfuncs.h.

◆ Shift

◆ Sid

Definition at line 1825 of file rtlfuncs.h.

◆ Sid2

_In_ PSID Sid2

Definition at line 1755 of file rtlfuncs.h.

Referenced by LsapIsPrefixSid(), RtlEqualPrefixSid(), and RtlEqualSid().

◆ Size

Definition at line 1335 of file rtlfuncs.h.

◆ Source

_In_ const STRING* Source

Definition at line 1386 of file rtlfuncs.h.

◆ SourceLuid

_In_ PLUID SourceLuid

Definition at line 1834 of file rtlfuncs.h.

◆ SourceSid

_In_ PSID SourceSid

Definition at line 1817 of file rtlfuncs.h.

◆ SourceString

_In_ PCWSTR SourceString

Definition at line 416 of file rtlfuncs.h.

◆ SourceStringLength

_In_ PCWSTR _In_ LONG SourceStringLength

Definition at line 2574 of file rtlfuncs.h.

◆ StartingAceIndex

_In_ ULONG _In_ ULONG StartingAceIndex

Definition at line 1852 of file rtlfuncs.h.

◆ StartingIndex

◆ String1Length

_In_ SIZE_T String1Length

Definition at line 513 of file rtlfuncs.h.

◆ String2

_In_ const STRING* String2

Definition at line 503 of file rtlfuncs.h.

◆ String2Length

_In_ SIZE_T _In_ SIZE_T String2Length

Definition at line 515 of file rtlfuncs.h.

◆ SubAuthorityCount

Definition at line 1794 of file rtlfuncs.h.

◆ TableContext

◆ Time

Definition at line 941 of file rtlfuncs.h.

◆ TypeMask

_In_ ULONG TypeMask

Definition at line 1063 of file rtlfuncs.h.

◆ UncompressedBufferSize

_In_ ULONG UncompressedBufferSize

Definition at line 2249 of file rtlfuncs.h.

◆ UncompressedFragmentSize

_In_ ULONG UncompressedFragmentSize

Definition at line 2261 of file rtlfuncs.h.

◆ UnicodeString

Definition at line 1498 of file rtlfuncs.h.

◆ UnicodeStringActualByteCount

*UnicodeStringActualByteCount PWSTR _In_ ULONG _Out_ PULONG UnicodeStringActualByteCount

Definition at line 2661 of file rtlfuncs.h.

◆ UnicodeStringByteCount

Definition at line 2650 of file rtlfuncs.h.

◆ UnicodeStringDestination

*UnicodeStringActualByteCount PWSTR UnicodeStringDestination

Definition at line 2659 of file rtlfuncs.h.

◆ UnicodeStringMaxByteCount

*UnicodeStringActualByteCount PWSTR _In_ ULONG UnicodeStringMaxByteCount

Definition at line 2660 of file rtlfuncs.h.

◆ UTF8StringActualByteCount

*UTF8StringActualByteCount PCHAR _In_ ULONG _Out_ PULONG UTF8StringActualByteCount

Definition at line 2648 of file rtlfuncs.h.

◆ UTF8StringByteCount

Definition at line 2663 of file rtlfuncs.h.

◆ UTF8StringDestination

*UTF8StringActualByteCount PCHAR UTF8StringDestination

Definition at line 2646 of file rtlfuncs.h.

◆ UTF8StringMaxByteCount

*UTF8StringActualByteCount PCHAR _In_ ULONG UTF8StringMaxByteCount

Definition at line 2647 of file rtlfuncs.h.

◆ Value

Definition at line 1018 of file rtlfuncs.h.

◆ ValueLength

◆ ValueName

Definition at line 555 of file rtlfuncs.h.

◆ ValueType

Definition at line 1074 of file rtlfuncs.h.

◆ WorkSpace

_In_ ULONG _In_ PVOID WorkSpace

Definition at line 2266 of file rtlfuncs.h.

Referenced by RtlCompressBuffer().