-/* $Id: rtl.h,v 1.4 2002/11/16 00:08:45 ekohl Exp $
+/* $Id$
*
*/
-
#ifndef __DDK_RTL_H
#define __DDK_RTL_H
#endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
#include <pe.h>
-
+#include <ole32/guiddef.h>
#ifndef __USE_W32API
#define RTL_QUERY_REGISTRY_DIRECT (0x00000020)
#define RTL_QUERY_REGISTRY_DELETE (0x00000040)
+
+/*
+ * PURPOSE: Flags used by RtlIsTextUnicode and IsTextUnicode
+ */
+#define IS_TEXT_UNICODE_ASCII16 (0x00000001)
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 (0x00000010)
+#define IS_TEXT_UNICODE_STATISTICS (0x00000002)
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS (0x00000020)
+#define IS_TEXT_UNICODE_CONTROLS (0x00000004)
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS (0x00000040)
+#define IS_TEXT_UNICODE_SIGNATURE (0x00000008)
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE (0x00000080)
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS (0x00000100)
+#define IS_TEXT_UNICODE_ODD_LENGTH (0x00000200)
+#define IS_TEXT_UNICODE_NULL_BYTES (0x00001000)
+#define IS_TEXT_UNICODE_UNICODE_MASK (0x0000000F)
+#define IS_TEXT_UNICODE_REVERSE_MASK (0x000000F0)
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK (0x00000F00)
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK (0x0000F000)
+
/*
* VOID
* InitializeObjectAttributes (
* ARGUMENTS:
* ListHead = Caller supplied storage for the head of the list
*/
-#define InitializeListHead(ListHead) \
-{ \
- (ListHead)->Flink = (ListHead); \
- (ListHead)->Blink = (ListHead); \
+static __inline VOID
+InitializeListHead(
+ IN PLIST_ENTRY ListHead)
+{
+ ListHead->Flink = ListHead->Blink = ListHead;
}
* ListHead = Head of the list
* Entry = Entry to insert
*/
-#define InsertHeadList(ListHead, ListEntry) \
-{ \
- PLIST_ENTRY OldFlink; \
- OldFlink = (ListHead)->Flink; \
- (ListEntry)->Flink = OldFlink; \
- (ListEntry)->Blink = (ListHead); \
- OldFlink->Blink = (ListEntry); \
- (ListHead)->Flink = (ListEntry); \
- assert((ListEntry) != NULL); \
- assert((ListEntry)->Blink!=NULL); \
- assert((ListEntry)->Blink->Flink == (ListEntry)); \
- assert((ListEntry)->Flink != NULL); \
- assert((ListEntry)->Flink->Blink == (ListEntry)); \
+static __inline VOID
+InsertHeadList(
+ IN PLIST_ENTRY ListHead,
+ IN PLIST_ENTRY Entry)
+{
+ PLIST_ENTRY OldFlink;
+ OldFlink = ListHead->Flink;
+ Entry->Flink = OldFlink;
+ Entry->Blink = ListHead;
+ OldFlink->Blink = Entry;
+ ListHead->Flink = Entry;
}
* ListHead = Head of the list
* Entry = Entry to insert
*/
-#define InsertTailList(ListHead, ListEntry) \
-{ \
- PLIST_ENTRY OldBlink; \
- OldBlink = (ListHead)->Blink; \
- (ListEntry)->Flink = (ListHead); \
- (ListEntry)->Blink = OldBlink; \
- OldBlink->Flink = (ListEntry); \
- (ListHead)->Blink = (ListEntry); \
- assert((ListEntry) != NULL); \
- assert((ListEntry)->Blink != NULL); \
- assert((ListEntry)->Blink->Flink == (ListEntry)); \
- assert((ListEntry)->Flink != NULL); \
- assert((ListEntry)->Flink->Blink == (ListEntry)); \
+static __inline VOID
+InsertTailList(
+ IN PLIST_ENTRY ListHead,
+ IN PLIST_ENTRY Entry)
+{
+ PLIST_ENTRY OldBlink;
+ OldBlink = ListHead->Blink;
+ Entry->Flink = ListHead;
+ Entry->Blink = OldBlink;
+ OldBlink->Flink = Entry;
+ ListHead->Blink = Entry;
}
/*
* RETURNS:
* The removed entry
*/
-/*
#define PopEntryList(ListHead) \
(ListHead)->Next; \
{ \
- PSINGLE_LIST_ENTRY FirstEntry; \
- FirstEntry = (ListHead)->Next; \
- if (FirstEntry != NULL) \
- { \
- (ListHead)->Next = FirstEntry->Next; \
- } \
+ PSINGLE_LIST_ENTRY _FirstEntry; \
+ _FirstEntry = (ListHead)->Next; \
+ if (_FirstEntry != NULL) \
+ (ListHead)->Next = _FirstEntry->Next; \
}
-*/
-static inline PSINGLE_LIST_ENTRY
-PopEntryList(PSINGLE_LIST_ENTRY ListHead)
-{
- PSINGLE_LIST_ENTRY ListEntry;
-
- ListEntry = ListHead->Next;
- if (ListEntry!=NULL)
- {
- ListHead->Next = ListEntry->Next;
- }
-
- return(ListEntry);
-}
#define RtlCopyMemory(Destination,Source,Length) \
memcpy((Destination),(Source),(Length))
-static
-inline
-VOID
-PushEntryList (
- PSINGLE_LIST_ENTRY ListHead,
- PSINGLE_LIST_ENTRY Entry
- )
-{
- Entry->Next = ListHead->Next;
- ListHead->Next = Entry;
-}
+#define PushEntryList(_ListHead, _Entry) \
+ (_Entry)->Next = (_ListHead)->Next; \
+ (_ListHead)->Next = (_Entry); \
/*
- *VOID
+ *BOOLEAN
*RemoveEntryList (
* PLIST_ENTRY Entry
* );
* ARGUMENTS:
* ListEntry = Entry to remove
*/
-#define RemoveEntryList(ListEntry) \
-{ \
- PLIST_ENTRY OldFlink; \
- PLIST_ENTRY OldBlink; \
- assert((ListEntry) != NULL); \
- assert((ListEntry)->Blink!=NULL); \
- assert((ListEntry)->Blink->Flink == (ListEntry)); \
- assert((ListEntry)->Flink != NULL); \
- assert((ListEntry)->Flink->Blink == (ListEntry)); \
- OldFlink = (ListEntry)->Flink; \
- OldBlink = (ListEntry)->Blink; \
- OldFlink->Blink = OldBlink; \
- OldBlink->Flink = OldFlink; \
- (ListEntry)->Flink = NULL; \
- (ListEntry)->Blink = NULL; \
+static __inline BOOLEAN
+RemoveEntryList(
+ IN PLIST_ENTRY Entry)
+{
+ PLIST_ENTRY OldFlink;
+ PLIST_ENTRY OldBlink;
+
+ OldFlink = Entry->Flink;
+ OldBlink = Entry->Blink;
+ OldFlink->Blink = OldBlink;
+ OldBlink->Flink = OldFlink;
+ return (OldFlink == OldBlink);
}
* RETURNS:
* The removed entry
*/
-/*
-#define RemoveHeadList(ListHead) \
- (ListHead)->Flink; \
- {RemoveEntryList((ListHead)->Flink)}
-*/
-/*
-PLIST_ENTRY
-RemoveHeadList (
- PLIST_ENTRY ListHead
- );
-*/
-
-static
-inline
-PLIST_ENTRY
-RemoveHeadList (
- PLIST_ENTRY ListHead
- )
+static __inline PLIST_ENTRY
+RemoveHeadList(
+ IN PLIST_ENTRY ListHead)
{
- PLIST_ENTRY Old;
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
-
- Old = ListHead->Flink;
-
- OldFlink = ListHead->Flink->Flink;
- OldBlink = ListHead->Flink->Blink;
- OldFlink->Blink = OldBlink;
- OldBlink->Flink = OldFlink;
- if (Old != ListHead)
- {
- Old->Flink = NULL;
- Old->Blink = NULL;
- }
-
- return(Old);
+ PLIST_ENTRY Flink;
+ PLIST_ENTRY Entry;
+
+ Entry = ListHead->Flink;
+ Flink = Entry->Flink;
+ ListHead->Flink = Flink;
+ Flink->Blink = ListHead;
+ return Entry;
}
* RETURNS:
* The removed entry
*/
+static __inline PLIST_ENTRY
+RemoveTailList(
+ IN PLIST_ENTRY ListHead)
+{
+ PLIST_ENTRY Blink;
+ PLIST_ENTRY Entry;
+
+ Entry = ListHead->Blink;
+ Blink = Entry->Blink;
+ ListHead->Blink = Blink;
+ Blink->Flink = ListHead;
+ return Entry;
+}
+
+
/*
-#define RemoveTailList(ListHead) \
- (ListHead)->Blink; \
- {RemoveEntryList((ListHead)->Blink)}
-*/
-/*
-PLIST_ENTRY
-RemoveTailList (
- PLIST_ENTRY ListHead
- );
-*/
+ * FIFO versions are slower but ensures that entries with equal SortField value
+ * are placed in FIFO order (assuming that entries are removed from Head).
+ */
-static
-inline
-PLIST_ENTRY
-RemoveTailList (
- PLIST_ENTRY ListHead
- )
-{
- PLIST_ENTRY Old;
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
+#define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
- Old = ListHead->Blink;
-
- OldFlink = ListHead->Blink->Flink;
- OldBlink = ListHead->Blink->Blink;
- OldFlink->Blink = OldBlink;
- OldBlink->Flink = OldFlink;
- if (Old != ListHead)
- {
- Old->Flink = NULL;
- Old->Blink = NULL;
- }
-
- return(Old);
+
+#define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+
+#define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+
+#define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
}
+
+/*
+ * BOOLEAN
+ * IsXstEntry (
+ * PLIST_ENTRY ListHead,
+ * PLIST_ENTRY Entry
+ * );
+*/
+#define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
+
+#define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
+
+#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
+
NTSTATUS
STDCALL
RtlAppendUnicodeToString (
PUNICODE_STRING Destination,
- PWSTR Source
+ PCWSTR Source
);
-ULONG
-STDCALL
-RtlCompareMemory (
- PVOID Source1,
- PVOID Source2,
- ULONG Length
- );
+SIZE_T STDCALL
+RtlCompareMemory(IN const VOID *Source1,
+ IN const VOID *Source2,
+ IN SIZE_T Length);
BOOLEAN
STDCALL
BOOLEAN CaseInSensitive
);
-VOID
-RtlGetCallersAddress (
- PVOID * CallersAddress
- );
-
NTSTATUS
STDCALL
RtlQueryRegistryValues (
IN ULONG RelativeTo,
- IN PWSTR Path,
+ IN PCWSTR Path,
IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
IN PVOID Context,
IN PVOID Environment
STDCALL
RtlWriteRegistryValue (
ULONG RelativeTo,
- PWSTR Path,
- PWSTR ValueName,
+ PCWSTR Path,
+ PCWSTR ValueName,
ULONG ValueType,
PVOID ValueData,
ULONG ValueLength
NTSTATUS STDCALL
RtlDeleteRegistryValue(IN ULONG RelativeTo,
- IN PWSTR Path,
- IN PWSTR ValueName);
+ IN PCWSTR Path,
+ IN PCWSTR ValueName);
VOID STDCALL
RtlMoveMemory (PVOID Destination, CONST VOID* Source, ULONG Length);
#define RTL_REGISTRY_WINDOWS_NT 3
#define RTL_REGISTRY_DEVICEMAP 4
#define RTL_REGISTRY_USER 5
-#define RTL_REGISTRY_ENUM 6 // ReactOS specific: Used internally in kernel only
-#define RTL_REGISTRY_MAXIMUM 7
+#define RTL_REGISTRY_MAXIMUM 6
#define RTL_REGISTRY_HANDLE 0x40000000
#define RTL_REGISTRY_OPTIONAL 0x80000000
#define LONG_MOST_SIGNIFICANT_BIT 3
-
-#if defined(__NTOSKRNL__) || defined(__NTDLL__)
+#define NLS_ANSI_CODE_PAGE NlsAnsiCodePage
+#define NLS_LEAD_BYTE_INFO NlsLeadByteInfo
#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
+
+#if defined(__NTOSKRNL__) || defined(__NTDLL__)
+extern USHORT EXPORTED NlsAnsiCodePage;
+extern PUSHORT EXPORTED NlsLeadByteInfo;
+extern BOOLEAN EXPORTED NlsMbCodePageTag;
+extern BOOLEAN EXPORTED NlsMbOemCodePageTag;
+extern PUSHORT EXPORTED NlsOemLeadByteInfo;
#else
-#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
-#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
+extern USHORT IMPORTED NlsAnsiCodePage;
+extern PUSHORT IMPORTED NlsLeadByteInfo;
+extern BOOLEAN IMPORTED NlsMbCodePageTag;
+extern BOOLEAN IMPORTED NlsMbOemCodePageTag;
+extern PUSHORT IMPORTED NlsOemLeadByteInfo;
#endif /* __NTOSKRNL__ || __NTDLL__ */
-extern BOOLEAN NLS_MB_CODE_PAGE_TAG;
-extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG;
-
-
-/*
- * NOTE: ReactOS extensions
- */
-#define RtlMin(X,Y) (((X) < (Y))? (X) : (Y))
-#define RtlMax(X,Y) (((X) > (Y))? (X) : (Y))
-#define RtlMin3(X,Y,Z) (((X) < (Y)) ? RtlMin(X,Z) : RtlMin(Y,Z))
-#define RtlMax3(X,Y,Z) (((X) > (Y)) ? RtlMax(X,Z) : RtlMax(Y,Z))
-
-
-/*
- * VOID
- * InitializeUnicodeString(PUNICODE_STRING DestinationString,
- * USHORT Lenght,
- * USHORT MaximumLength,
- * PCWSTR Buffer);
- *
- * Initialize n UNICODE_STRING from its fields. Use when you know the values of
- * all the fields in advance
- */
-
-#define InitializeUnicodeString(__PDEST_STRING__,__LENGTH__,__MAXLENGTH__,__BUFFER__) \
-{ \
- (__PDEST_STRING__)->Length = (__LENGTH__); \
- (__PDEST_STRING__)->MaximumLength = (__MAXLENGTH__); \
- (__PDEST_STRING__)->Buffer = (__BUFFER__); \
-}
-
-
-/*
- * VOID
- * RtlInitUnicodeStringFromLiteral(PUNICODE_STRING DestinationString,
- * PCWSTR SourceString);
- *
- * Initialize a UNICODE_STRING from a wide string literal. WARNING: use only with
- * string literals and statically initialized arrays, it will calculate the wrong
- * length otherwise
- */
-
-#define RtlInitUnicodeStringFromLiteral(__PDEST_STRING__,__SOURCE_STRING__) \
- InitializeUnicodeString( \
- (__PDEST_STRING__), \
- sizeof(__SOURCE_STRING__) - sizeof(WCHAR), \
- sizeof(__SOURCE_STRING__), \
- (__SOURCE_STRING__) \
-)
-
-
-/*
- * Static initializer for UNICODE_STRING variables.
- *
- * Usage:
- * UNICODE_STRING wstr = UNICODE_STRING_INITIALIZER(L"string");
- */
-
-#define UNICODE_STRING_INITIALIZER(__SOURCE_STRING__) \
-{ \
- sizeof((__SOURCE_STRING__)) - sizeof(WCHAR), \
- sizeof((__SOURCE_STRING__)), \
- (__SOURCE_STRING__) \
-}
-
-
-/*
- * Initializer for empty UNICODE_STRING variables.
- *
- * Usage:
- * UNICODE_STRING wstr = EMPTY_UNICODE_STRING;
- */
-
-#define EMPTY_UNICODE_STRING {0, 0, NULL}
-
-
/*
VOID
PushEntryList (
*/
-#ifndef __USE_W32API
-
-
-/*
- * An ReactOS extension
- */
-static
-inline
-PSINGLE_LIST_ENTRY
- PopEntrySList(
- PSLIST_HEADER ListHead
- )
-{
- PSINGLE_LIST_ENTRY ListEntry;
-
- ListEntry = ListHead->s.Next.Next;
- if (ListEntry!=NULL)
- {
- ListHead->s.Next.Next = ListEntry->Next;
- ListHead->s.Depth++;
- ListHead->s.Sequence++;
- }
- return ListEntry;
-}
+NTSTATUS STDCALL
+RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
+ PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+ PULONG BufferLength);
+NTSTATUS STDCALL
+RtlAddAccessAllowedAce (PACL Acl,
+ ULONG Revision,
+ ACCESS_MASK AccessMask,
+ PSID Sid);
-/*
- * An ReactOS extension
- */
-static
-inline
-VOID
-PushEntrySList (
- PSLIST_HEADER ListHead,
- PSINGLE_LIST_ENTRY Entry
- )
-{
- Entry->Next = ListHead->s.Next.Next;
- ListHead->s.Next.Next = Entry;
- ListHead->s.Depth++;
- ListHead->s.Sequence++;
-}
+NTSTATUS
+STDCALL
+RtlAddAccessAllowedAceEx(
+ IN OUT PACL pAcl,
+ IN DWORD dwAceRevision,
+ IN DWORD AceFlags,
+ IN DWORD AccessMask,
+ IN PSID pSid);
-#else /* __USE_W32API */
-/*
- * An ReactOS extension
- */
-static
-inline
-PSINGLE_LIST_ENTRY
- PopEntrySList(
- PSLIST_HEADER ListHead
- )
-{
- PSINGLE_LIST_ENTRY ListEntry;
-
- ListEntry = ListHead->Next.Next;
- if (ListEntry!=NULL)
- {
- ListHead->Next.Next = ListEntry->Next;
- ListHead->Depth++;
- ListHead->Sequence++;
- }
- return ListEntry;
-}
+NTSTATUS STDCALL
+RtlAddAccessDeniedAce (PACL Acl,
+ ULONG Revision,
+ ACCESS_MASK AccessMask,
+ PSID Sid);
+NTSTATUS STDCALL
+RtlAddAce (PACL Acl,
+ ULONG Revision,
+ ULONG StartingIndex,
+ PACE AceList,
+ ULONG AceListLength);
-/*
- * An ReactOS extension
- */
-static
-inline
-VOID
-PushEntrySList (
- PSLIST_HEADER ListHead,
- PSINGLE_LIST_ENTRY Entry
- )
-{
- Entry->Next = ListHead->Next.Next;
- ListHead->Next.Next = Entry;
- ListHead->Depth++;
- ListHead->Sequence++;
-}
+NTSTATUS STDCALL
+RtlAddAtomToAtomTable (IN PRTL_ATOM_TABLE AtomTable,
+ IN PWSTR AtomName,
+ OUT PRTL_ATOM Atom);
-#endif /* __USE_W32API */
+NTSTATUS STDCALL
+RtlAddAuditAccessAce (PACL Acl,
+ ULONG Revision,
+ ACCESS_MASK AccessMask,
+ PSID Sid,
+ BOOLEAN Success,
+ BOOLEAN Failure);
+NTSTATUS STDCALL
+RtlAddRange (IN OUT PRTL_RANGE_LIST RangeList,
+ IN ULONGLONG Start,
+ IN ULONGLONG End,
+ IN UCHAR Attributes,
+ IN ULONG Flags, /* RTL_RANGE_LIST_ADD_... flags */
+ IN PVOID UserData OPTIONAL,
+ IN PVOID Owner OPTIONAL);
-NTSTATUS
-STDCALL
-RtlAddAtomToAtomTable (
- IN PRTL_ATOM_TABLE AtomTable,
- IN PWSTR AtomName,
- OUT PRTL_ATOM Atom
- );
+NTSTATUS STDCALL
+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,
+ OUT PSID *Sid);
PVOID STDCALL
RtlAllocateHeap (
ULONG Size
);
-WCHAR
-STDCALL
-RtlAnsiCharToUnicodeChar (
- CHAR AnsiChar
- );
+WCHAR STDCALL
+RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar);
ULONG
STDCALL
PUNICODE_STRING Source
);
+BOOLEAN STDCALL
+RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess,
+ ACCESS_MASK DesiredAccess);
+
+BOOLEAN STDCALL
+RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess,
+ ACCESS_MASK DesiredAccess);
+
BOOLEAN
STDCALL
RtlAreBitsClear (
PCHAR Message
);
+VOID
+STDCALL
+RtlCaptureContext (
+ OUT PCONTEXT ContextRecord
+ );
+
+USHORT
+STDCALL
+RtlCaptureStackBackTrace (
+ IN ULONG FramesToSkip,
+ IN ULONG FramesToCapture,
+ OUT PVOID *BackTrace,
+ OUT PULONG BackTraceHash OPTIONAL
+ );
+
+
+
NTSTATUS
STDCALL
RtlCharToInteger (
IN PRTL_BITMAP BitMapHeader
);
+VOID
+STDCALL
+RtlClearBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
+
VOID
STDCALL
RtlClearBits (
IN ULONG NumberToClear
);
-DWORD
-STDCALL
+ULONG STDCALL
RtlCompactHeap (
- HANDLE hheap,
- DWORD flags
+ HANDLE Heap,
+ ULONG Flags
);
LONG
RtlCompareUnicodeString (
PUNICODE_STRING String1,
PUNICODE_STRING String2,
- BOOLEAN BaseInsensitive
+ BOOLEAN CaseInsensitive
);
NTSTATUS STDCALL
IN PVOID WorkSpace);
LARGE_INTEGER STDCALL
-RtlConvertLongToLargeInteger(IN LONG SignedInteger);
+RtlConvertLongToLargeInteger (IN LONG SignedInteger);
NTSTATUS STDCALL
-RtlConvertSidToUnicodeString(IN OUT PUNICODE_STRING String,
- IN PSID Sid,
- IN BOOLEAN AllocateString);
+RtlConvertSidToUnicodeString (IN OUT PUNICODE_STRING String,
+ IN PSID Sid,
+ IN BOOLEAN AllocateString);
LARGE_INTEGER STDCALL
-RtlConvertUlongToLargeInteger(IN ULONG UnsignedInteger);
+RtlConvertUlongToLargeInteger (IN ULONG UnsignedInteger);
#if 0
VOID
PLUID_AND_ATTRIBUTES Src,
PLUID_AND_ATTRIBUTES Dest);
+NTSTATUS STDCALL
+RtlCopyRangeList (OUT PRTL_RANGE_LIST CopyRangeList,
+ IN PRTL_RANGE_LIST RangeList);
+
NTSTATUS STDCALL
RtlCopySid(ULONG BufferLength,
PSID Dest,
RtlCopyUnicodeString(PUNICODE_STRING DestinationString,
PUNICODE_STRING SourceString);
+NTSTATUS STDCALL
+RtlCreateAcl (PACL Acl,
+ ULONG AclSize,
+ ULONG AclRevision);
+
NTSTATUS STDCALL
RtlCreateAtomTable(IN ULONG TableSize,
IN OUT PRTL_ATOM_TABLE *AtomTable);
RtlCreateHeap (
ULONG Flags,
PVOID BaseAddress,
- ULONG SizeToReserve, // dwMaximumSize
- ULONG SizeToCommit, // dwInitialSize
+ ULONG SizeToReserve, /* dwMaximumSize */
+ ULONG SizeToCommit, /* dwInitialSize */
PVOID Unknown,
PRTL_HEAP_DEFINITION Definition
);
-NTSTATUS
-STDCALL
-RtlCreateRegistryKey (
- ULONG RelativeTo,
- PWSTR Path
- );
+NTSTATUS STDCALL
+RtlCreateRegistryKey (ULONG RelativeTo,
+ PWSTR Path);
+
+NTSTATUS STDCALL
+RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ULONG Revision);
+
+NTSTATUS STDCALL
+RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+ ULONG Revision);
NTSTATUS
STDCALL
-RtlCreateSecurityDescriptor (
- PSECURITY_DESCRIPTOR SecurityDescriptor,
- ULONG Revision
+RtlCreateSystemVolumeInformationFolder(
+ IN PUNICODE_STRING VolumeRootPath
);
-BOOLEAN
-STDCALL
-RtlCreateUnicodeString (
- OUT PUNICODE_STRING Destination,
- IN PWSTR Source
- );
+BOOLEAN STDCALL
+RtlCreateUnicodeString (OUT PUNICODE_STRING Destination,
+ IN PCWSTR Source);
BOOLEAN STDCALL
-RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
- IN PCSZ Source);
+RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
+ IN PCSZ Source);
NTSTATUS
STDCALL
RtlCustomCPToUnicodeN (
- PRTL_NLS_DATA NlsData,
+ IN PCPTABLEINFO CustomCP,
PWCHAR UnicodeString,
ULONG UnicodeSize,
PULONG ResultSize,
ULONG CustomSize
);
+BOOLEAN STDCALL
+RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields,
+ OUT PLARGE_INTEGER SystemTime,
+ IN PLARGE_INTEGER CurrentTime,
+ IN BOOLEAN ThisYearsCutoverOnly);
+
NTSTATUS STDCALL
RtlDecompressBuffer(IN USHORT CompressionFormat,
OUT PUCHAR UncompressedBuffer,
OUT PULONG FinalUncompressedSize,
IN PVOID WorkSpace);
+PRTL_SPLAY_LINKS
+STDCALL
+RtlDelete (
+ PRTL_SPLAY_LINKS Links
+ );
+
+NTSTATUS STDCALL
+RtlDeleteAce (PACL Acl,
+ ULONG AceIndex);
+
+NTSTATUS STDCALL
+RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable,
+ IN RTL_ATOM Atom);
+
+BOOLEAN
+STDCALL
+RtlDeleteElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+
+BOOLEAN
+STDCALL
+RtlDeleteElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer
+ );
+
+VOID
+STDCALL
+RtlDeleteNoSplay (
+ PRTL_SPLAY_LINKS Links,
+ PRTL_SPLAY_LINKS *Root
+ );
+
+
NTSTATUS STDCALL
-RtlDeleteAtomFromAtomTable(IN PRTL_ATOM_TABLE AtomTable,
- IN RTL_ATOM Atom);
+RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList,
+ IN PVOID Owner);
+
+NTSTATUS STDCALL
+RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList,
+ IN ULONGLONG Start,
+ IN ULONGLONG End,
+ IN PVOID Owner);
NTSTATUS STDCALL
RtlDescribeChunk(IN USHORT CompressionFormat,
OUT PULONG ChunkSize);
NTSTATUS STDCALL
-RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
+RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable);
+
+HANDLE STDCALL
+RtlDestroyHeap (HANDLE hheap);
+
+NTSTATUS
+STDCALL
+RtlDispatchException(
+ PEXCEPTION_RECORD pExcptRec,
+ CONTEXT * pContext
+ );
-BOOL STDCALL
-RtlDestroyHeap(HANDLE hheap);
NTSTATUS
STDCALL
ULONG Multiplier
);
+PVOID
+STDCALL
+RtlEnumerateGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ BOOLEAN Restart
+ );
+
+PVOID
+STDCALL
+RtlEnumerateGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ BOOLEAN Restart
+ );
+
+PVOID
+STDCALL
+RtlEnumerateGenericTableLikeADirectory (
+ IN PRTL_AVL_TABLE Table,
+ IN PRTL_AVL_MATCH_FUNCTION MatchFunction,
+ IN PVOID MatchData,
+ IN ULONG NextFlag,
+ IN OUT PVOID *RestartKey,
+ IN OUT PULONG DeleteCount,
+ IN OUT PVOID Buffer
+ );
+
+PVOID
+STDCALL
+RtlEnumerateGenericTableWithoutSplaying (
+ PRTL_GENERIC_TABLE Table,
+ PVOID *RestartKey
+ );
+
+PVOID
+STDCALL
+RtlEnumerateGenericTableWithoutSplayingAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID *RestartKey
+ );
+
+BOOLEAN STDCALL
+RtlEqualPrefixSid (PSID Sid1,
+ PSID Sid2);
+
+BOOLEAN STDCALL
+RtlEqualSid (PSID Sid1,
+ PSID Sid2);
+
BOOLEAN
STDCALL
RtlEqualString (
ULONG HintIndex
);
+ULONG
+STDCALL
+RtlFindClearRuns (
+ PRTL_BITMAP BitMapHeader,
+ PRTL_BITMAP_RUN RunArray,
+ ULONG SizeOfRunArray,
+ BOOLEAN LocateLongestRuns
+ );
+
+ULONG
+STDCALL
+RtlFindLastBackwardRunClear (
+ IN PRTL_BITMAP BitMapHeader,
+ IN ULONG FromIndex,
+ IN PULONG StartingRunIndex
+ );
+
+ULONG
+STDCALL
+RtlFindNextForwardRunClear (
+ IN PRTL_BITMAP BitMapHeader,
+ IN ULONG FromIndex,
+ IN PULONG StartingRunIndex
+ );
+
+
+PUNICODE_PREFIX_TABLE_ENTRY
+STDCALL
+RtlFindUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_STRING FullName,
+ ULONG CaseInsensitiveIndex
+ );
+
ULONG
STDCALL
RtlFindFirstRunClear (
PULONG StartingIndex
);
+CCHAR STDCALL
+RtlFindLeastSignificantBit (IN ULONGLONG Set);
+
ULONG
STDCALL
RtlFindLongestRunClear (
OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
);
+CCHAR STDCALL
+RtlFindMostSignificantBit (IN ULONGLONG Set);
+
+NTSTATUS STDCALL
+RtlFindRange (IN PRTL_RANGE_LIST RangeList,
+ IN ULONGLONG Minimum,
+ IN ULONGLONG Maximum,
+ IN ULONG Length,
+ IN ULONG Alignment,
+ IN ULONG Flags,
+ IN UCHAR AttributeAvailableMask,
+ IN PVOID Context OPTIONAL,
+ IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
+ OUT PULONGLONG Start);
+
ULONG
STDCALL
RtlFindSetBits (
ULONG HintIndex
);
-NTSTATUS
-STDCALL
-RtlFormatCurrentUserKeyPath (
- IN OUT PUNICODE_STRING KeyPath
- );
+BOOLEAN STDCALL
+RtlFirstFreeAce (PACL Acl,
+ PACE* Ace);
-VOID
-STDCALL
-RtlFreeAnsiString (
- PANSI_STRING AnsiString
- );
+NTSTATUS STDCALL
+RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath);
+
+VOID STDCALL
+RtlFreeAnsiString (IN PANSI_STRING AnsiString);
BOOLEAN
STDCALL
PVOID Address
);
+VOID STDCALL
+RtlFreeOemString (IN POEM_STRING OemString);
+
+VOID STDCALL
+RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList);
+
+PVOID STDCALL
+RtlFreeSid (PSID Sid);
+
+VOID STDCALL
+RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString);
+
+VOID STDCALL
+RtlGenerate8dot3Name (IN PUNICODE_STRING Name,
+ IN BOOLEAN AllowExtendedCharacters,
+ IN OUT PGENERATE_NAME_CONTEXT Context,
+ OUT PUNICODE_STRING Name8dot3);
+
+NTSTATUS STDCALL
+RtlGetAce (PACL Acl,
+ ULONG AceIndex,
+ PACE *Ace);
+
VOID
STDCALL
-RtlFreeOemString (
- POEM_STRING OemString
+RtlGetCallersAddress(
+ OUT PVOID *CallersAddress,
+ OUT PVOID *CallersCaller
);
-VOID
+NTSTATUS STDCALL
+RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine,
+ OUT PULONG CompressBufferAndWorkSpaceSize,
+ OUT PULONG CompressFragmentWorkSpaceSize);
+
+NTSTATUS STDCALL
+RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_DESCRIPTOR_CONTROL Control,
+ PULONG Revision);
+
+NTSTATUS STDCALL
+RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN DaclPresent,
+ PACL* Dacl,
+ PBOOLEAN DaclDefaulted);
+
+VOID STDCALL
+RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage,
+ OUT PUSHORT OemCodePage);
+
+PVOID
STDCALL
-RtlFreeUnicodeString (
- PUNICODE_STRING UnicodeString
+RtlGetElementGenericTable(
+ PRTL_GENERIC_TABLE Table,
+ ULONG I
);
-VOID STDCALL
-RtlGenerate8dot3Name(IN PUNICODE_STRING Name,
- IN BOOLEAN AllowExtendedCharacters,
- IN OUT PGENERATE_NAME_CONTEXT Context,
- OUT PUNICODE_STRING Name8dot3);
+PVOID
+STDCALL
+RtlGetElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ ULONG I
+ );
NTSTATUS STDCALL
-RtlGetCompressionWorkSpaceSize(IN USHORT CompressionFormatAndEngine,
- OUT PULONG CompressBufferAndWorkSpaceSize,
- OUT PULONG CompressFragmentWorkSpaceSize);
+RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList,
+ OUT PRTL_RANGE_LIST_ITERATOR Iterator,
+ OUT PRTL_RANGE *Range);
-VOID
+NTSTATUS STDCALL
+RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID* Group,
+ PBOOLEAN GroupDefaulted);
+
+NTSTATUS STDCALL
+RtlGetLastNtStatus(VOID);
+
+ULONG STDCALL
+RtlGetLastWin32Error(VOID);
+
+NTSTATUS STDCALL
+RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator,
+ OUT PRTL_RANGE *Range,
+ IN BOOLEAN MoveForwards);
+
+ULONG
+STDCALL
+RtlGetNtGlobalFlags (
+ VOID
+ );
+
+NTSTATUS STDCALL
+RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID* Owner,
+ PBOOLEAN OwnerDefaulted);
+
+NTSTATUS STDCALL
+RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN SaclPresent,
+ PACL* Sacl,
+ PBOOLEAN SaclDefaulted);
+
+BOOLEAN STDCALL
+RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PUCHAR RMControl);
+
+NTSTATUS
+STDCALL
+RtlGetSetBootStatusData(
+ HANDLE Filehandle,
+ BOOLEAN WriteMode,
+ DWORD DataClass,
+ PVOID Buffer,
+ ULONG BufferSize,
+ DWORD DataClass2
+ );
+
+NTSTATUS STDCALL
+RtlGUIDFromString (IN PUNICODE_STRING GuidString,
+ OUT GUID* Guid);
+
+NTSTATUS
STDCALL
-RtlGetDefaultCodePage (
- PUSHORT AnsiCodePage,
- PUSHORT OemCodePage
+RtlHashUnicodeString(
+ IN const UNICODE_STRING *String,
+ IN BOOLEAN CaseInSensitive,
+ IN ULONG HashAlgorithm,
+ OUT PULONG HashValue
);
+PSID_IDENTIFIER_AUTHORITY STDCALL
+RtlIdentifierAuthoritySid (PSID Sid);
+
PVOID
STDCALL
RtlImageDirectoryEntryToData (
PIMAGE_NT_HEADERS
STDCALL
RtlImageNtHeader (
- PVOID BaseAddress
+ IN PVOID BaseAddress
+ );
+
+PIMAGE_SECTION_HEADER
+STDCALL
+RtlImageRvaToSection (
+ PIMAGE_NT_HEADERS NtHeader,
+ PVOID BaseAddress,
+ ULONG Rva
+ );
+
+ULONG
+STDCALL
+RtlImageRvaToVa (
+ PIMAGE_NT_HEADERS NtHeader,
+ PVOID BaseAddress,
+ ULONG Rva,
+ PIMAGE_SECTION_HEADER *SectionHeader
+ );
+
+VOID
+STDCALL
+RtlInitAnsiString (
+ PANSI_STRING DestinationString,
+ PCSZ SourceString
+ );
+
+VOID
+STDCALL
+RtlInitCodePageTable (
+ IN PUSHORT TableBase,
+ OUT PCPTABLEINFO CodePageTable
+ );
+
+VOID
+STDCALL
+RtlInitializeUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable
+ );
+
+NTSTATUS STDCALL
+RtlInitializeSid (PSID Sid,
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount);
+
+VOID
+STDCALL
+RtlInitializeBitMap(
+ IN PRTL_BITMAP BitMapHeader,
+ IN PULONG BitMapBuffer,
+ IN ULONG SizeOfBitMap);
+
+VOID
+STDCALL
+RtlInitNlsTables (
+ IN PUSHORT AnsiTableBase,
+ IN PUSHORT OemTableBase,
+ IN PUSHORT CaseTableBase,
+ OUT PNLSTABLEINFO NlsTable
+ );
+
+VOID
+STDCALL
+RtlInitString (
+ PSTRING DestinationString,
+ PCSZ SourceString
+ );
+
+VOID
+STDCALL
+RtlInitUnicodeString (
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+
+VOID
+STDCALL
+RtlInitializeBitMap (
+ IN OUT PRTL_BITMAP BitMapHeader,
+ IN PULONG BitMapBuffer,
+ IN ULONG SizeOfBitMap
+ );
+
+NTSTATUS
+STDCALL
+RtlInitializeContext (
+ IN HANDLE ProcessHandle,
+ OUT PCONTEXT ThreadContext,
+ IN PVOID ThreadStartParam OPTIONAL,
+ IN PTHREAD_START_ROUTINE ThreadStartAddress,
+ IN PINITIAL_TEB InitialTeb
+ );
+
+VOID
+STDCALL
+RtlInitializeGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
+ PVOID TableContext
+ );
+
+VOID
+STDCALL
+RtlInitializeGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
+ PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
+ PRTL_AVL_FREE_ROUTINE FreeRoutine,
+ PVOID TableContext
+ );
+
+VOID STDCALL
+RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList);
+
+PVOID
+STDCALL
+RtlInsertElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PBOOLEAN NewElement OPTIONAL
+ );
+
+PVOID
+STDCALL
+RtlInsertElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PBOOLEAN NewElement OPTIONAL
+ );
+
+PVOID
+STDCALL
+RtlInsertElementGenericTableFull (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PBOOLEAN NewElement OPTIONAL,
+ PVOID NodeOrParent,
+ TABLE_SEARCH_RESULT SearchResult
+ );
+
+PVOID
+STDCALL
+RtlInsertElementGenericTableFullAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ ULONG BufferSize,
+ PBOOLEAN NewElement OPTIONAL,
+ PVOID NodeOrParent,
+ TABLE_SEARCH_RESULT SearchResult
+ );
+
+BOOLEAN
+STDCALL
+RtlInsertUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_STRING Prefix,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+
+NTSTATUS
+STDCALL
+RtlInt64ToUnicodeString (
+ IN ULONGLONG Value,
+ IN ULONG Base OPTIONAL,
+ IN OUT PUNICODE_STRING String
+ );
+
+NTSTATUS
+STDCALL
+RtlIntegerToChar (
+ IN ULONG Value,
+ IN ULONG Base,
+ IN ULONG Length,
+ IN OUT PCHAR String
+ );
+
+NTSTATUS
+STDCALL
+RtlIntegerToUnicode(
+ IN ULONG Value,
+ IN ULONG Base OPTIONAL,
+ IN ULONG Length OPTIONAL,
+ IN OUT LPWSTR String
+ );
+
+NTSTATUS
+STDCALL
+RtlIntegerToUnicodeString (
+ IN ULONG Value,
+ IN ULONG Base,
+ IN OUT PUNICODE_STRING String
+ );
+
+NTSTATUS STDCALL
+RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
+ IN PRTL_RANGE_LIST RangeList);
+
+LPSTR
+STDCALL
+RtlIpv4AddressToStringA(
+ PULONG IP,
+ LPSTR Buffer
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4AddressToStringExA(
+ PULONG IP,
+ PULONG Port,
+ LPSTR Buffer,
+ PULONG MaxSize
+ );
+
+LPWSTR
+STDCALL
+RtlIpv4AddressToStringW(
+ PULONG IP,
+ LPWSTR Buffer
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4AddressToStringExW(
+ PULONG IP,
+ PULONG Port,
+ LPWSTR Buffer,
+ PULONG MaxSize
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4StringToAddressA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
);
-PIMAGE_SECTION_HEADER
+NTSTATUS
STDCALL
-RtlImageRvaToSection (
- PIMAGE_NT_HEADERS NtHeader,
- PVOID BaseAddress,
- ULONG Rva
+RtlIpv4StringToAddressExA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
);
-ULONG
+NTSTATUS
STDCALL
-RtlImageRvaToVa (
- PIMAGE_NT_HEADERS NtHeader,
- PVOID BaseAddress,
- ULONG Rva,
- PIMAGE_SECTION_HEADER *SectionHeader
+RtlIpv4StringToAddressW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
);
-VOID
+NTSTATUS
STDCALL
-RtlInitAnsiString (
- PANSI_STRING DestinationString,
- PCSZ SourceString
+RtlIpv4StringToAddressExW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
);
-VOID
+NTSTATUS
STDCALL
-RtlInitString (
- PSTRING DestinationString,
- PCSZ SourceString
+RtlIpv6AddressToStringA(
+ PULONG IP,
+ LPSTR Buffer
);
-VOID
+NTSTATUS
STDCALL
-RtlInitUnicodeString (
- PUNICODE_STRING DestinationString,
- PCWSTR SourceString
+RtlIpv6AddressToStringExA(
+ PULONG IP,
+ PULONG Port,
+ LPSTR Buffer,
+ PULONG MaxSize
);
-VOID
+NTSTATUS
STDCALL
-RtlInitializeBitMap (
- IN OUT PRTL_BITMAP BitMapHeader,
- IN PULONG BitMapBuffer,
- IN ULONG SizeOfBitMap
+RtlIpv6AddressToStringW(
+ PULONG IP,
+ LPWSTR Buffer
);
NTSTATUS
STDCALL
-RtlInitializeContext (
- IN HANDLE ProcessHandle,
- IN PCONTEXT Context,
- IN PVOID Parameter,
- IN PTHREAD_START_ROUTINE StartAddress,
- IN OUT PINITIAL_TEB InitialTeb
+RtlIpv6AddressToStringExW(
+ PULONG IP,
+ PULONG Port,
+ LPWSTR Buffer,
+ PULONG MaxSize
);
-VOID
+NTSTATUS
STDCALL
-RtlInitializeGenericTable (
- IN OUT PRTL_GENERIC_TABLE Table,
- IN PVOID CompareRoutine,
- IN PVOID AllocateRoutine,
- IN PVOID FreeRoutine,
- IN ULONG UserParameter
+RtlIpv6StringToAddressA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
);
-PVOID
+NTSTATUS
STDCALL
-RtlInsertElementGenericTable (
- IN OUT PRTL_GENERIC_TABLE Table,
- IN PVOID Element,
- IN ULONG ElementSize,
- IN ULONG Unknown4
+RtlIpv6StringToAddressExA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
);
NTSTATUS
STDCALL
-RtlIntegerToChar (
- IN ULONG Value,
- IN ULONG Base,
- IN ULONG Length,
- IN OUT PCHAR String
+RtlIpv6StringToAddressW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
);
NTSTATUS
STDCALL
-RtlIntegerToUnicodeString (
- IN ULONG Value,
- IN ULONG Base,
- IN OUT PUNICODE_STRING String
+RtlIpv6StringToAddressExW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
);
BOOLEAN
STDCALL
RtlIsGenericTableEmpty (
- IN PRTL_GENERIC_TABLE Table
+ PRTL_GENERIC_TABLE Table
+ );
+
+BOOLEAN
+STDCALL
+RtlIsGenericTableEmptyAvl (
+ PRTL_AVL_TABLE Table
);
+
BOOLEAN STDCALL
-RtlIsNameLegalDOS8Dot3(IN PUNICODE_STRING UnicodeName,
- IN PANSI_STRING AnsiName,
- OUT PBOOLEAN SpacesFound);
+RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
+ IN PANSI_STRING AnsiName,
+ OUT PBOOLEAN SpacesFound);
+
+NTSTATUS STDCALL
+RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList,
+ IN ULONGLONG Start,
+ IN ULONGLONG End,
+ IN ULONG Flags,
+ IN UCHAR AttributeAvailableMask,
+ IN PVOID Context OPTIONAL,
+ IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
+ OUT PBOOLEAN Available);
+
+ULONG
+STDCALL
+RtlIsTextUnicode (
+ PVOID Buffer,
+ ULONG Length,
+ ULONG *Flags
+ );
+
+BOOLEAN
+STDCALL
+RtlIsValidOemCharacter (
+ IN PWCHAR Char
+ );
LARGE_INTEGER
STDCALL
LARGE_INTEGER Subtrahend
);
-ULONG
+ULONG STDCALL
+RtlLengthRequiredSid (UCHAR SubAuthorityCount);
+
+ULONG STDCALL
+RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
+
+ULONG STDCALL
+RtlLengthSid (PSID Sid);
+
+NTSTATUS
+STDCALL
+RtlLockBootStatusData(
+ HANDLE Filehandle
+ );
+
+BOOLEAN STDCALL
+RtlLockHeap (IN HANDLE Heap);
+
+NTSTATUS STDCALL
+RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable,
+ IN PWSTR AtomName,
+ OUT PRTL_ATOM Atom);
+
+PVOID
STDCALL
-RtlLengthSecurityDescriptor (
- PSECURITY_DESCRIPTOR SecurityDescriptor
+RtlLookupElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
);
-BOOL
+PVOID
+STDCALL
+RtlLookupElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer
+ );
+
+PVOID
+STDCALL
+RtlLookupElementGenericTableFull (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ OUT PVOID *NodeOrParent,
+ OUT TABLE_SEARCH_RESULT *SearchResult
+ );
+
+PVOID
STDCALL
-RtlLockHeap (
- HANDLE hheap
+RtlLookupElementGenericTableFullAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ OUT PVOID *NodeOrParent,
+ OUT TABLE_SEARCH_RESULT *SearchResult
);
+NTSTATUS STDCALL
+RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
+ PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+ PULONG BufferLength);
+
+VOID STDCALL
+RtlMapGenericMask (PACCESS_MASK AccessMask,
+ PGENERIC_MAPPING GenericMapping);
+
NTSTATUS
STDCALL
-RtlLookupAtomInAtomTable (
- IN PRTL_ATOM_TABLE AtomTable,
- IN PWSTR AtomName,
- OUT PRTL_ATOM Atom
+RtlMapSecurityErrorToNtStatus(
+ IN ULONG SecurityError
);
+NTSTATUS STDCALL
+RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
+ IN PRTL_RANGE_LIST RangeList1,
+ IN PRTL_RANGE_LIST RangeList2,
+ IN ULONG Flags);
+
NTSTATUS
STDCALL
RtlMultiByteToUnicodeN (
PWCHAR UnicodeString,
ULONG UnicodeSize,
PULONG ResultSize,
- PCHAR MbString,
+ const PCHAR MbString,
ULONG MbSize
);
ULONG MbSize
);
+PUNICODE_PREFIX_TABLE_ENTRY
+STDCALL
+RtlNextUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ BOOLEAN Restart
+ );
+
DWORD
STDCALL
RtlNtStatusToDosError (
ULONG
STDCALL
-RtlNumberGenericTableElements (
- IN PRTL_GENERIC_TABLE Table
+RtlNumberGenericTableElements(
+ PRTL_GENERIC_TABLE Table
+ );
+
+ULONG
+STDCALL
+RtlNumberGenericTableElementsAvl (
+ PRTL_AVL_TABLE Table
);
+
ULONG
STDCALL
RtlNumberOfClearBits (
NTSTATUS
STDCALL
-RtlOemToUnicodeN (
- PWCHAR UnicodeString,
- ULONG UnicodeSize,
- PULONG ResultSize,
- PCHAR OemString,
- ULONG OemSize
+RtlOemToUnicodeN(
+ PWSTR UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ IN PCHAR OemString,
+ ULONG BytesInOemString
);
NTSTATUS STDCALL
IN RTL_ATOM Atom
);
+VOID
+FASTCALL
+RtlPrefetchMemoryNonTemporal(
+ IN PVOID Source,
+ IN SIZE_T Length
+ );
+
BOOLEAN
STDCALL
RtlPrefixString (
IN OUT PULONG NameLength OPTIONAL
);
-NTSTATUS
+NTSTATUS STDCALL
+RtlQueryInformationAcl (PACL Acl,
+ PVOID Information,
+ ULONG InformationLength,
+ ACL_INFORMATION_CLASS InformationClass);
+
+NTSTATUS STDCALL
+RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
+
+VOID STDCALL
+RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
+
+VOID STDCALL
+RtlRaiseStatus(NTSTATUS Status);
+
+ULONG STDCALL
+RtlRandom (PULONG Seed);
+
+ULONG
+STDCALL
+RtlRandomEx(
+ PULONG Seed
+ );
+
+PRTL_SPLAY_LINKS
STDCALL
-RtlQueryTimeZoneInformation (
- IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
+RtlRealPredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PRTL_SPLAY_LINKS
+STDCALL
+RtlRealSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PVOID STDCALL
+RtlReAllocateHeap (
+ HANDLE Heap,
+ ULONG Flags,
+ PVOID Ptr,
+ ULONG Size
);
VOID
STDCALL
-RtlRaiseException (
- IN PEXCEPTION_RECORD ExceptionRecord
+RtlRemoveUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
);
-LPVOID
+NTSTATUS
STDCALL
-RtlReAllocateHeap (
- HANDLE hheap,
- DWORD flags,
- LPVOID ptr,
- DWORD size
+RtlReserveChunk (
+ IN USHORT CompressionFormat,
+ IN OUT PUCHAR *CompressedBuffer,
+ IN PUCHAR EndOfCompressedBufferPlus1,
+ OUT PUCHAR *ChunkBuffer,
+ IN ULONG ChunkSize
);
-NTSTATUS STDCALL
-RtlReserveChunk(IN USHORT CompressionFormat,
- IN OUT PUCHAR *CompressedBuffer,
- IN PUCHAR EndOfCompressedBufferPlus1,
- OUT PUCHAR *ChunkBuffer,
- IN ULONG ChunkSize);
+VOID STDCALL
+RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
+
+VOID STDCALL
+RtlRestoreLastWin32Error(IN ULONG Error);
/*
* VOID
* );
*/
#define RtlRetrieveUlong(DestAddress,SrcAddress) \
- if ((ULONG)(SrcAddress) & LONG_MASK) \
+ if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
{ \
((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
* );
*/
#define RtlRetrieveUshort(DestAddress,SrcAddress) \
- if ((ULONG)(SrcAddress) & SHORT_MASK) \
+ if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
{ \
((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
*((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
}
-VOID
-STDCALL
-RtlSecondsSince1970ToTime (
- ULONG SecondsSince1970,
- PLARGE_INTEGER Time
- );
+VOID STDCALL
+RtlSecondsSince1970ToTime (ULONG SecondsSince1970,
+ PLARGE_INTEGER Time);
-VOID
+VOID STDCALL
+RtlSecondsSince1980ToTime (ULONG SecondsSince1980,
+ PLARGE_INTEGER Time);
+
+NTSTATUS STDCALL
+RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD,
+ PSECURITY_DESCRIPTOR AbsSD,
+ PULONG AbsSDSize,
+ PACL Dacl,
+ PULONG DaclSize,
+ PACL Sacl,
+ PULONG SaclSize,
+ PSID Owner,
+ PULONG OwnerSize,
+ PSID Group,
+ PULONG GroupSize);
+
+NTSTATUS
STDCALL
-RtlSecondsSince1980ToTime (
- ULONG SecondsSince1980,
- PLARGE_INTEGER Time
+RtlSelfRelativeToAbsoluteSD2(
+ PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+ PULONG BufferSize
);
+VOID STDCALL
+RtlSetAllBits (IN PRTL_BITMAP BitMapHeader);
+
+NTSTATUS STDCALL
+RtlSetAttributesSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN SECURITY_DESCRIPTOR_CONTROL Control,
+ OUT PULONG Revision);
+
VOID
STDCALL
-RtlSetAllBits (
- IN PRTL_BITMAP BitMapHeader
+RtlSetBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
);
VOID
ULONG NumberToSet
);
-NTSTATUS
-STDCALL
-RtlSetDaclSecurityDescriptor (
- PSECURITY_DESCRIPTOR SecurityDescriptor,
- BOOLEAN DaclPresent,
- PACL Dacl,
- BOOLEAN DaclDefaulted
- );
+NTSTATUS STDCALL
+RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
+ IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
-NTSTATUS
-STDCALL
-RtlSetTimeZoneInformation (
- IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
- );
+NTSTATUS STDCALL
+RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN DaclPresent,
+ PACL Dacl,
+ BOOLEAN DaclDefaulted);
-DWORD
+NTSTATUS STDCALL
+RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID Group,
+ BOOLEAN GroupDefaulted);
+
+NTSTATUS STDCALL
+RtlSetInformationAcl (PACL Acl,
+ PVOID Information,
+ ULONG InformationLength,
+ ACL_INFORMATION_CLASS InformationClass);
+
+VOID STDCALL
+RtlSetLastWin32Error(IN ULONG Error);
+
+VOID STDCALL
+RtlSetLastWin32ErrorAndNtStatusFromNtStatus(IN NTSTATUS Status);
+
+NTSTATUS STDCALL
+RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID Owner,
+ BOOLEAN OwnerDefaulted);
+
+NTSTATUS STDCALL
+RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN SaclPresent,
+ PACL Sacl,
+ BOOLEAN SaclDefaulted);
+
+VOID STDCALL
+RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PUCHAR RMControl);
+
+NTSTATUS STDCALL
+RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
+
+ULONG STDCALL
+RtlSizeHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID MemoryPointer
+ );
+
+PRTL_SPLAY_LINKS
STDCALL
-RtlSizeHeap (
- HANDLE hheap,
- DWORD flags,
- PVOID pmem
+RtlSplay (
+ PRTL_SPLAY_LINKS Links
);
/*
* );
*/
#define RtlStoreUlong(Address,Value) \
- if ((ULONG)(Address) & LONG_MASK) \
+ if ((ULONG_PTR)(Address) & LONG_MASK) \
{ \
((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
- ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
+ ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
} \
* );
*/
#define RtlStoreUshort(Address,Value) \
- if ((ULONG)(Address) & SHORT_MASK) \
+ if ((ULONG_PTR)(Address) & SHORT_MASK) \
{ \
((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
*((PUSHORT)(Address))=(USHORT)(Value); \
}
+NTSTATUS STDCALL
+RtlStringFromGUID (IN REFGUID Guid,
+ OUT PUNICODE_STRING GuidString);
+
+PULONG STDCALL
+RtlSubAuthoritySid (PSID Sid,
+ ULONG SubAuthority);
+
+PULONG STDCALL
+RtlSubAuthoritySid (PSID Sid,
+ ULONG SubAuthority);
+
+PUCHAR STDCALL
+RtlSubAuthorityCountSid (PSID Sid);
+
+PRTL_SPLAY_LINKS
+STDCALL
+RtlSubtreePredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PRTL_SPLAY_LINKS
+STDCALL
+RtlSubtreeSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
BOOLEAN
STDCALL
-RtlTimeFieldsToTime (
- PTIME_FIELDS TimeFields,
- PLARGE_INTEGER Time
+RtlTestBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
);
+
+BOOLEAN STDCALL
+RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
+ PLARGE_INTEGER Time);
+
BOOLEAN
STDCALL
RtlTimeToSecondsSince1970 (
PULONG SecondsSince1980
);
+VOID
+STDCALL
+RtlTimeToElapsedTimeFields(
+ PLARGE_INTEGER Time,
+ PTIME_FIELDS TimeFields
+ );
+
VOID
STDCALL
RtlTimeToTimeFields (
PTIME_FIELDS TimeFields
);
+
+ULONG FASTCALL
+RtlUlongByteSwap (IN ULONG Source);
+
+ULONGLONG FASTCALL
+RtlUlonglongByteSwap (IN ULONGLONG Source);
+
ULONG
STDCALL
RtlUnicodeStringToAnsiSize (
NTSTATUS
STDCALL
RtlUnicodeToCustomCPN (
- PRTL_NLS_DATA NlsData,
+ IN PCPTABLEINFO CustomCP,
PCHAR MbString,
ULONG MbSize,
PULONG ResultSize,
ULONG UnicodeSize
);
-BOOL
+ULONG STDCALL
+RtlUniform (PULONG Seed);
+
+BOOLEAN STDCALL
+RtlUnlockHeap (IN HANDLE Heap);
+
+NTSTATUS
STDCALL
-RtlUnlockHeap (
- HANDLE hheap
+RtlUnlockBootStatusData(
+ HANDLE Filehandle
);
VOID
STDCALL
RtlUpcaseUnicodeString (
IN OUT PUNICODE_STRING DestinationString,
- IN PUNICODE_STRING SourceString,
+ IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
);
NTSTATUS
STDCALL
RtlUpcaseUnicodeToCustomCPN (
- PRTL_NLS_DATA NlsData,
+ IN PCPTABLEINFO CustomCP,
PCHAR MbString,
ULONG MbSize,
PULONG ResultSize,
ULONG UnicodeSize
);
-CHAR
+CHAR STDCALL
+RtlUpperChar (CHAR Source);
+
+VOID STDCALL
+RtlUpperString (PSTRING DestinationString,
+ PSTRING SourceString);
+
+USHORT FASTCALL
+RtlUshortByteSwap (IN USHORT Source);
+
+BOOLEAN STDCALL
+RtlValidAcl (PACL Acl);
+
+BOOLEAN STDCALL
+RtlValidateHeap (
+ HANDLE Heap,
+ ULONG Flags,
+ PVOID pmem
+ );
+
+BOOLEAN
STDCALL
-RtlUpperChar (
- CHAR Source
+RtlValidRelativeSecurityDescriptor (
+ IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+ IN ULONG SecurityDescriptorLength,
+ IN SECURITY_INFORMATION RequiredInformation
);
-VOID
+BOOLEAN STDCALL
+RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
+
+BOOLEAN STDCALL
+RtlValidSid (IN PSID Sid);
+
+/*
+NTSTATUS
STDCALL
-RtlUpperString (
- PSTRING DestinationString,
- PSTRING SourceString
+RtlVerifyVersionInfo(
+ IN PRTL_OSVERSIONINFOEXW VersionInfo,
+ IN ULONG TypeMask,
+ IN ULONGLONG ConditionMask
);
+*/
-BOOL
+NTSTATUS
STDCALL
-RtlValidateHeap (
- HANDLE hheap,
- DWORD flags,
- PVOID pmem
+RtlVolumeDeviceToDosName(
+ IN PVOID VolumeDeviceObject,
+ OUT PUNICODE_STRING DosName
);
-BOOLEAN
+ULONG
STDCALL
-RtlValidSecurityDescriptor (
- PSECURITY_DESCRIPTOR SecurityDescriptor
+RtlWalkFrameChain (
+ OUT PVOID *Callers,
+ IN ULONG Count,
+ IN ULONG Flags
);
BOOLEAN STDCALL
-RtlValidSid(IN PSID Sid);
+RtlZeroHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags
+ );
ULONG
STDCALL
IN PUNICODE_STRING UnicodeString
);
+NTSTATUS
+FASTCALL
+RtlpOemStringToCountedUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN POEM_STRING OemSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUpcaseUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN PCUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUpcaseUnicodeStringToAnsiString(
+ IN OUT PANSI_STRING AnsiDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUpcaseUnicodeStringToCountedOemString(
+ IN OUT POEM_STRING OemDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUpcaseUnicodeStringToOemString (
+ IN OUT POEM_STRING OemDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpDowncaseUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpAnsiStringToUnicodeString(
+ IN OUT PUNICODE_STRING DestinationString,
+ IN PANSI_STRING SourceString,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUnicodeStringToAnsiString(
+ IN OUT PANSI_STRING AnsiDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpOemStringToUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN POEM_STRING OemSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUnicodeStringToOemString(
+ IN OUT POEM_STRING OemDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+
+BOOLEAN
+FASTCALL
+RtlpCreateUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN PCWSTR Source,
+ IN POOL_TYPE PoolType);
+
+NTSTATUS
+FASTCALL
+RtlpUnicodeStringToCountedOemString(
+ IN OUT POEM_STRING OemDest,
+ IN PUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString,
+ IN POOL_TYPE PoolType);
+NTSTATUS STDCALL
+RtlpDuplicateUnicodeString(
+ INT AddNull,
+ IN PUNICODE_STRING SourceString,
+ PUNICODE_STRING DestinationString,
+ POOL_TYPE PoolType);
+
/* Register io functions */
UCHAR
);
-NTSTATUS STDCALL RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision);
-NTSTATUS STDCALL RtlQueryInformationAcl (PACL Acl, PVOID Information, ULONG InformationLength, ACL_INFORMATION_CLASS InformationClass);
-NTSTATUS STDCALL RtlSetInformationAcl (PACL Acl, PVOID Information, ULONG InformationLength, ACL_INFORMATION_CLASS InformationClass);
-BOOLEAN STDCALL RtlValidAcl (PACL Acl);
-
-NTSTATUS STDCALL RtlAddAccessAllowedAce(PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid);
-NTSTATUS STDCALL RtlAddAccessDeniedAce(PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid);
-NTSTATUS STDCALL RtlAddAce(PACL Acl, ULONG Revision, ULONG StartingIndex, PACE AceList, ULONG AceListLength);
-NTSTATUS STDCALL RtlAddAuditAccessAce (PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid, BOOLEAN Success, BOOLEAN Failure);
-NTSTATUS STDCALL RtlDeleteAce(PACL Acl, ULONG AceIndex);
-BOOLEAN STDCALL RtlFirstFreeAce(PACL Acl, PACE* Ace);
-NTSTATUS STDCALL RtlGetAce(PACL Acl, ULONG AceIndex, PACE *Ace);
-
-NTSTATUS STDCALL RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD, PSECURITY_DESCRIPTOR RelSD, PULONG BufferLength);
-NTSTATUS STDCALL RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD, PSECURITY_DESCRIPTOR RelSD, PULONG BufferLength);
-NTSTATUS STDCALL RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG Revision);
-BOOLEAN STDCALL RtlValidSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
-ULONG STDCALL RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
-NTSTATUS STDCALL RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN DaclPresent, PACL Dacl, BOOLEAN DaclDefaulted);
-NTSTATUS STDCALL RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN DaclPresent, PACL* Dacl, PBOOLEAN DaclDefauted);
-NTSTATUS STDCALL RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Owner, BOOLEAN OwnerDefaulted);
-NTSTATUS STDCALL RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID* Owner, PBOOLEAN OwnerDefaulted);
-NTSTATUS STDCALL RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Group, BOOLEAN GroupDefaulted);
-NTSTATUS STDCALL RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID* Group, PBOOLEAN GroupDefaulted);
-NTSTATUS STDCALL RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL Control, PULONG Revision);
-NTSTATUS STDCALL RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN SaclPresent, PACL Sacl, BOOLEAN SaclDefaulted);
-NTSTATUS STDCALL RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN SaclPresent, PACL* Sacl, PBOOLEAN SaclDefauted);
-NTSTATUS STDCALL RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD,
- PSECURITY_DESCRIPTOR AbsSD,
- PDWORD AbsSDSize,
- PACL Dacl,
- PDWORD DaclSize,
- PACL Sacl,
- PDWORD SaclSize,
- PSID Owner,
- PDWORD OwnerSize,
- PSID Group,
- PDWORD GroupSize);
-
-NTSTATUS STDCALL RtlAllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
- UCHAR SubAuthorityCount,
- ULONG SubAuthority0,
- ULONG SubAuthority1,
- ULONG SubAuthority2,
- ULONG SubAuthority3,
- ULONG SubAuthority4,
- ULONG SubAuthority5,
- ULONG SubAuthority6,
- ULONG SubAuthority7,
- PSID *Sid);
-ULONG STDCALL RtlLengthRequiredSid (UCHAR SubAuthorityCount);
-PSID_IDENTIFIER_AUTHORITY STDCALL RtlIdentifierAuthoritySid (PSID Sid);
-NTSTATUS STDCALL RtlInitializeSid (PSID Sid, PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, UCHAR SubAuthorityCount);
-PULONG STDCALL RtlSubAuthoritySid (PSID Sid, ULONG SubAuthority);
-BOOLEAN STDCALL RtlEqualPrefixSid (PSID Sid1, PSID Sid2);
-BOOLEAN STDCALL RtlEqualSid(PSID Sid1, PSID Sid2);
-PSID STDCALL RtlFreeSid (PSID Sid);
-ULONG STDCALL RtlLengthSid (PSID Sid);
-PULONG STDCALL RtlSubAuthoritySid (PSID Sid, ULONG SubAuthority);
-PUCHAR STDCALL RtlSubAuthorityCountSid (PSID Sid);
-BOOLEAN STDCALL RtlValidSid (PSID Sid);
-NTSTATUS STDCALL RtlConvertSidToUnicodeString (PUNICODE_STRING String, PSID Sid, BOOLEAN AllocateBuffer);
-
-BOOLEAN STDCALL RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess);
-BOOLEAN STDCALL RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess);
-VOID STDCALL RtlMapGenericMask (PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping);
-
-
/* functions exported from NTOSKRNL.EXE which are considered RTL */
#if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
char *_itoa (int value, char *string, int radix);
+wchar_t *_itow (int value, wchar_t *string, int radix);
int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
int _stricmp(const char *s1, const char *s2);
#endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
#endif /* __DDK_RTL_H */
+
+