This section contains references, in alphabetical order, for the subset of system-supplied RtlXxx support routines that can be used by kernel-mode file systems and file system filter drivers but not by device drivers.
In addition to the routines documented here, file systems and file system filter drivers can also call any of the RtlXxx routines described in the Kernel-Mode Driver Architecture Reference section that are declared in Ntifs.h.
In this section
Topic Description
RtlAbsoluteToSelfRelativeSD
The RtlAbsoluteToSelfRelativeSD routine creates a new security descriptor in self-relative format by using a security descriptor in absolute format as a template.
RtlAddAccessAllowedAce
The RtlAddAccessAllowedAce routine adds an access-allowed access control entry (ACE) to an access control list (ACL). The access is granted to the specified security identifier (SID).
RtlAddAccessAllowedAceEx
The RtlAddAccessAllowedAceEx routine adds an access-allowed access control entry (ACE) with inheritance ACE flags to an access control list (ACL). The access is granted to the specified security identifier (SID).
RtlAddAce
The RtlAddAce routine adds one or more access control entries (ACEs) to a specified access control list (ACL).
RtlAllocateAndInitializeSid
Reserved for system use.
RtlAllocateHeap
The RtlAllocateHeap routine allocates a block of memory from a heap.
RtlAppendStringToString
The RtlAppendStringToString routine concatenates two counted strings. It copies bytes from the source up to the length of the destination buffer.
RtlCaptureContext
The RtlCaptureContext function retrieves a context record in the context of the caller.
RtlCaptureStackBackTrace
The RtlCaptureStackBackTrace routine captures a stack back trace by walking up the stack and recording the information for each frame.
RtlCompareMemoryUlong
The RtlCompareMemoryUlong routine returns how many bytes in a block of memory match a specified pattern.
RtlCompressBuffer
The RtlCompressBuffer function compresses a buffer and can be used by a file system driver to facilitate the implementation of file compression.
RtlCompressChunks
Reserved for system use.
RtlConvertSidToUnicodeString
The RtlConvertSidToUnicodeString routine generates a printable Unicode string representation of a security identifier (SID).
RtlCopyLuid
The RtlCopyLuid routine copies a locally unique identifier (LUID) to a buffer.
RtlCopySid
The RtlCopySid routine copies the value of a security identifier (SID) to a buffer.
RtlCreateAcl
The RtlCreateAcl routine creates and initializes an access control list (ACL).
RtlCreateHeap
The RtlCreateHeap routine creates a heap object that can be used by the calling process. This routine reserves space in the virtual address space of the process and allocates physical storage for a specified initial portion of this block.
RtlCreateSecurityDescriptorRelative
The RtlCreateSecurityDescriptorRelative routine initializes a new security descriptor in self-relative format. On return, the security descriptor is initialized with no system ACL (SACL), no discretionary ACL (DACL), no owner, no primary group, and all control flags set to zero.
RtlCreateSystemVolumeInformationFolder
The RtlCreateSystemVolumeInformationFolder routine verifies the existence of the "System Volume Information" folder on a file system volume. If the folder is not present, then the folder is created.
RtlCreateUnicodeString
The RtlCreateUnicodeString routine creates a new counted Unicode string.
RtlCustomCPToUnicodeN
Reserved for system use.
RtlDecompressBuffer
The RtlDecompressBuffer function decompresses an entire compressed buffer.
RtlDecompressBufferEx
The RtlDecompressBufferEx function decompresses an entire compressed buffer.
RtlDecompressChunks
Reserved for system use.
RtlDecompressFragment
The RtlDecompressFragment function is used to decompress part of a compressed buffer (that is, a buffer "fragment").
RtlDelete
The RtlDelete routine deletes the specified node from the splay link tree.
RtlDeleteAce
The RtlDeleteAce routine deletes an access control entry (ACE) from a specified access control list (ACL).
RtlDeleteNoSplay
The RtlDeleteNoSplay routine deletes the specified node from the splay link tree.
RtlDeleteElementGenericTable
The RtlDeleteElementGenericTable routine deletes an element from a generic table.
RtlDeleteElementGenericTableAvl
The RtlDeleteElementGenericTableAvl routine deletes an element from a generic table.
RtlDescribeChunk
Reserved for system use.
RtlDestroyHeap
The RtlDestroyHeap routine destroys the specified heap object. RtlDestroyHeap decommits and releases all the pages of a private heap object, and it invalidates the handle to the heap.
RtlDowncaseUnicodeString
The RtlDowncaseUnicodeString routine converts the specified Unicode source string to lowercase. The translation conforms to the current system locale information.
RtlEnumerateGenericTable
The RtlEnumerateGenericTable routine is used to enumerate the elements in a generic table.
RtlEnumerateGenericTableAvl
The RtlEnumerateGenericTableAvl routine is used to enumerate the elements in a generic table.
RtlEnumerateGenericTableLikeADirectory
The RtlEnumerateGenericTableLikeADirectory routine returns the elements of a generic table, one-by-one, in collation order.
RtlEnumerateGenericTableWithoutSplaying
The RtlEnumerateGenericTableWithoutSplaying routine is used to enumerate the elements in a generic table.
RtlEnumerateGenericTableWithoutSplayingAvl
The RtlEnumerateGenericTableWithoutSplayingAvl routine is used to enumerate the elements in a generic table.
RtlEqualPrefixSid
The RtlEqualPrefixSid routine determines whether two security-identifier (SID) prefixes are equal. An SID prefix is the entire SID except for the last subauthority value.
RtlEqualSid
The RtlEqualSid routine determines whether two security identifier (SID) values are equal. Two SIDs must match exactly to be considered equal.
RtlFillMemoryUlong
The RtlFillMemoryUlong routine fills the specified range of memory with one or more repetitions of a ULONG value.
RtlFillMemoryUlonglong
The RtlFillMemoryUlonglong routine fills a given range of memory with one or more repetitions of a given ULONGLONG value.
RtlFindUnicodePrefix
The RtlFindUnicodePrefix routine searches for the best match for a given Unicode file name in a prefix table.
RtlFreeHeap
The RtlFreeHeap routine frees a memory block that was allocated from a heap by RtlAllocateHeap.
RtlFreeOemString
The RtlFreeOemString routine releases storage that was allocated by any of the Rtl..ToOemString routines.
RtlFreeSid
Reserved for system use.
RtlGenerate8dot3Name
The RtlGenerate8dot3Name routine generates a short (8.3) name for the specified long file name.
RtlGetAce
The RtlGetAce routine obtains a pointer to an access control entry (ACE) in an access control list (ACL).
RtlGetCompressionWorkSpaceSize
The RtlGetCompressionWorkSpaceSize function is used to determine the correct size of the WorkSpace buffer for the RtlCompressBuffer and RtlDecompressFragment functions.
RtlGetDaclSecurityDescriptor
The RtlGetDaclSecurityDescriptor routine returns a pointer to the discretionary ACL (DACL) for a security descriptor.
RtlGetElementGenericTable
The RtlGetElementGenericTable routine returns a pointer to the caller-supplied data for a particular generic table element.
RtlGetElementGenericTableAvl
The RtlGetElementGenericTableAvl routine returns a pointer to the caller-supplied data for a particular generic Adelson-Velsky/Landis (AVL) table element.
RtlGetGroupSecurityDescriptor
The RtlGetGroupSecurityDescriptor routine returns the primary group information for a given security descriptor.
RtlGetOwnerSecurityDescriptor
The RtlGetOwnerSecurityDescriptor routine returns the owner information for a given security descriptor.
RtlGetSaclSecurityDescriptor
The RtlGetSaclSecurityDescriptor routine returns a pointer to the system ACL (SACL) for a security descriptor.
RtlIdentifierAuthoritySid
Reserved for system use.
RtlInitCodePageTable
Reserved for system use.
RtlInitializeGenericTable
The RtlInitializeGenericTable routine initializes a generic table.
RtlInitializeGenericTableAvl
The RtlInitializeGenericTableAvl routine initializes a generic table using Adelson-Velsky/Landis (AVL) trees.
RtlInitializeSid
The RtlInitializeSid routine initializes a security identifier (SID) structure.
RtlInitializeSplayLinks
The RtlInitializeSplayLinks routine initializes a splay link node.
RtlInitializeUnicodePrefix
The RtlInitializeUnicodePrefix routine initializes a prefix table.
RtlInsertAsLeftChild
The RtlInsertAsLeftChild routine inserts a splay link node into the tree as the left child of the specified node.
RtlInsertAsRightChild
The RtlInsertAsRightChild routine inserts a given splay link into the tree as the right child of a given node in that tree.
RtlInsertElementGenericTable
The RtlInsertElementGenericTable routine adds a new element to a generic table.
RtlInsertElementGenericTableAvl
The RtlInsertElementGenericTableAvl routine adds a new entry to a generic table.
RtlInsertElementGenericTableFullAvl
The RtlInsertElementGenericTableFullAvl routine adds a new entry to a generic table.
RtlInsertUnicodePrefix
The RtlInsertUnicodePrefix routine inserts a new element into a Unicode prefix table.
RtlIsGenericTableEmpty
The RtlIsGenericTableEmpty routine determines if a generic table is empty.
RtlIsGenericTableEmptyAvl
The RtlIsGenericTableEmptyAvl routine determines if a generic table is empty.
RtlIsLeftChild
The RtlIsLeftChild routine determines whether a given splay link is the left child of a node in a splay link tree.
RtlIsNameLegalDOS8Dot3
The RtlIsNameLegalDOS8Dot3 routine determines whether a given name represents a valid short (8.3) file name.
RtlIsRightChild
The RtlIsRightChild routine determines whether a given splay link is the right child of a node in a splay link tree.
RtlIsRoot
The RtlIsRoot routine determines whether the specified node is the root node of a splay link tree.
RtlIsValidOemCharacter
The RtlIsValidOemCharacter routine determines if the specified Unicode character can be mapped to a valid OEM character.
RtlLeftChild
The RtlLeftChild routine returns a pointer to the left child of the specified splay link node.
RtlLengthRequiredSid
The RtlLengthRequiredSid routine returns the length, in bytes, of the buffer required to store a security identifier (SID) with a specified number of subauthorities.
RtlLengthSid
The RtlLengthSid routine returns the length, in bytes, of a valid security identifier (SID).
RtlLookupElementGenericTable
The RtlLookupElementGenericTable routine searches a generic table for an element that matches the specified data.
RtlLookupElementGenericTableAvl
The RtlLookupElementGenericTableAvl routine searches a generic table for an element that matches the specified data.
RtlLookupElementGenericTableFullAvl
The RtlLookupElementGenericTableFullAvl routine searches a generic table for an element that matches the specified data.
RtlLookupFirstMatchingElementGenericTableAvl
The RtlLookupFirstMatchingElementGenericTableAvl routine finds the left-most element in the tree that matches the indicated data.
RtlMultiByteToUnicodeN
The RtlMultiByteToUnicodeN routine translates the specified source string into a Unicode string, using the current system ANSI code page (ACP). The source string is not necessarily from a multibyte character set.
RtlMultiByteToUnicodeSize
The RtlMultiByteToUnicodeSize routine determines the number of bytes that are required to store the Unicode translation for the specified source string. The translation is assumed to use the current system ANSI code page (ACP). The source string is not necessarily from a multibyte character set.
RtlNextUnicodePrefix
The RtlNextUnicodePrefix routine is used to enumerate the elements in a Unicode prefix table.
RtlNtStatusToDosError
The RtlNtStatusToDosError routine converts the specified NTSTATUS code to its equivalent system error code.
RtlNtStatusToDosErrorNoTeb
Reserved for system use.
RtlNumberGenericTableElements
The RtlNumberGenericTableElements routine returns the number of elements in a generic table.
RtlNumberGenericTableElementsAvl
The RtlNumberGenericTableElementsAvl routine returns the number of elements in a generic table.
RtlOemStringToCountedUnicodeSize
The RtlOemStringToCountedUnicodeSize routine determines the size, in bytes, that a given OEM string will be after it is translated into a counted Unicode string.
RtlOemStringToCountedUnicodeString
The RtlOemStringToCountedUnicodeString routine translates the specified source string into a Unicode string using the current system OEM code page.
RtlOemStringToUnicodeSize
The RtlOemStringToUnicodeSize routine determines the size, in bytes, that a given OEM string will be after it is translated into a null-terminated Unicode string.
RtlxOemStringToUnicodeSize
Reserved for system use.
RtlOemStringToUnicodeString
The RtlOemStringToUnicodeString routine translates a given source string into a null-terminated Unicode string using the current system OEM code page.
RtlOemToUnicodeN
The RtlOemToUnicodeN routine translates the specified source string into a Unicode string, using the current system OEM code page.
RtlOffsetToPointer
The RtlOffsetToPointer routine returns a pointer for a given offset from a given base address.
RtlParent
The RtlParent routine returns a pointer to the parent of the specified node in a splay link tree.
RtlPointerToOffset
The RtlPointerToOffset routine returns the offset from a given base address of a given pointer.
RtlRandom
The RtlRandom routine returns a random number that was generated from a given seed value.
RtlRandomEx
The RtlRandomEx routine returns a random number that was generated from a given seed value.
RtlRealPredecessor
The RtlRealPredecessor routine returns a pointer to the predecessor of the specified node in the splay link tree.
RtlRealSuccessor
The RtlRealSuccessor routine returns a pointer to the successor of the specified node in the splay link tree.
RtlRemoveUnicodePrefix
The RtlRemoveUnicodePrefix routine removes an element from a prefix table.
RtlReserveChunk
Reserved for system use.
RtlRightChild
The RtlRightChild routine returns a pointer to the right child of the specified splay link node.
RtlSecondsSince1970ToTime
The RtlSecondsSince1970ToTime routine converts the elapsed time, in seconds, since the beginning of 1970 to an absolute system time value.
RtlSecondsSince1980ToTime
The RtlSecondsSince1980ToTime routine converts the elapsed time, in seconds, since the beginning of 1980 to an absolute system time value.
RtlSelfRelativeToAbsoluteSD
The RtlSelfRelativeToAbsoluteSD routine creates a new security descriptor in absolute format by using a security descriptor in self-relative format as a template.
RtlSetGroupSecurityDescriptor
The RtlSetGroupSecurityDescriptor routine sets the primary group information of an absolute-format security descriptor. It replaces any primary group information that is already present in the security descriptor.
RtlSetOwnerSecurityDescriptor
The RtlSetOwnerSecurityDescriptor routine sets the owner information of an absolute-format security descriptor. It replaces any owner information that is already present in the security descriptor.
RtlSplay
The RtlSplay routine rebalances, or "splays," a splay link tree around the specified splay link, making that link the new root of the tree.
RtlSubAuthorityCountSid
Reserved for system use.
RtlSubAuthoritySid
The RtlSubAuthoritySid routine returns a pointer to a specified subauthority of a security identifier (SID).
RtlSubtreePredecessor
The RtlSubtreePredecessor routine returns a pointer to the predecessor of the specified node within the subtree that is rooted at that node.
RtlSubtreeSuccessor
The RtlSubtreeSuccessor routine returns a pointer to the successor of the specified node within the subtree that is rooted at that node.
RtlTimeToSecondsSince1970
The RtlTimeToSecondsSince1970 routine converts a given absolute system time value to the elapsed time, in seconds, since the beginning of 1970.
RtlTimeToSecondsSince1980
The RtlTimeToSecondsSince1980 routine converts a given absolute system time value to the elapsed time, in seconds, since the beginning of 1980.
RtlUnicodeStringToAnsiSize
The RtlMultiByteToUnicodeSize routine determines the number of bytes that are required to store the ANSI translation for the specified Unicode string.
RtlUnicodeStringToCountedOemString
The RtlUnicodeStringToCountedOemString routine translates the specified Unicode source string into a counted OEM string using the current system OEM code page.
RtlUnicodeStringToOemSize
The RtlUnicodeStringToOemSize routine determines the size, in bytes, that a given Unicode string will be after it is translated into an OEM string.
RtlxUnicodeStringToOemSize
Reserved for system use.
RtlUnicodeStringToOemString
The RtlUnicodeStringToOemString routine translates a given Unicode source string into an OEM string using the current system OEM code page.
RtlUnicodeToCustomCPN
Reserved for system use.
RtlUnicodeToMultiByteN
The RtlUnicodeToMultiByteN routine translates the specified Unicode string into a new character string, using the current system ANSI code page (ACP). The translated string is not necessarily from a multibyte character set.
RtlUnicodeToMultiByteSize
The RtlUnicodeToMultiByteSize routine determines the number of bytes that are required to store the multibyte translation for the specified Unicode string. The translation is assumed to use the current system ANSI code page (ACP).
RtlUnicodeToOemN
The RtlUnicodeToOemN routine translates a given Unicode string to an OEM string, using the current system OEM code page.
RtlUpcaseUnicodeStringToCountedOemString
The RtlUpcaseUnicodeStringToCountedOemString routine translates a given Unicode source string into an uppercase counted OEM string using the current system OEM code page.
RtlUpcaseUnicodeStringToOemString
The RtlUpcaseUnicodeStringToOemString routine translates a given Unicode source string into an uppercase OEM string using the current system OEM code page.
RtlUpcaseUnicodeToCustomCPN
Reserved for system use.
RtlUpcaseUnicodeToMultiByteN
The RtlUpcaseUnicodeToMultiByteN routine translates the specified Unicode string into a new uppercase character string, using the current system ANSI code page (ACP). The translated string is not necessarily from a multibyte character set.
RtlUpcaseUnicodeToOemN
The RtlUpcaseUnicodeToOemN routine translates a given Unicode string into an uppercase OEM string, using the current system OEM code page.
RtlValidSid
The RtlValidSid routine validates a security identifier (SID) by verifying that the revision number is within a known range and that the number of subauthorities is less than the maximum.