-/* $Id: rtl.h,v 1.27 2004/02/03 14:19:29 ekohl Exp $
+/* $Id$
*
*/
#ifndef __DDK_RTL_H
* 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
*/
-/*
-#define RemoveTailList(ListHead) \
- (ListHead)->Blink; \
- {RemoveEntryList((ListHead)->Blink)}
-*/
-/*
-PLIST_ENTRY
-RemoveTailList (
- PLIST_ENTRY ListHead
- );
-*/
-
-static
-inline
-PLIST_ENTRY
-RemoveTailList (
- PLIST_ENTRY ListHead
- )
+static __inline PLIST_ENTRY
+RemoveTailList(
+ IN PLIST_ENTRY ListHead)
{
- PLIST_ENTRY Old;
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
-
- 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);
+ PLIST_ENTRY Blink;
+ PLIST_ENTRY Entry;
+
+ Entry = ListHead->Blink;
+ Blink = Entry->Blink;
+ ListHead->Blink = Blink;
+ Blink->Flink = ListHead;
+ return 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
-STDCALL
-RtlGetCallersAddress (
- PVOID * CallersAddress
- );
-
NTSTATUS
STDCALL
RtlQueryRegistryValues (
#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
NTSTATUS STDCALL
RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
- PSECURITY_DESCRIPTOR RelSD,
+ PSECURITY_DESCRIPTOR_RELATIVE RelSD,
PULONG BufferLength);
NTSTATUS STDCALL
ACCESS_MASK AccessMask,
PSID Sid);
+NTSTATUS
+STDCALL
+RtlAddAccessAllowedAceEx(
+ IN OUT PACL pAcl,
+ IN DWORD dwAceRevision,
+ IN DWORD AceFlags,
+ IN DWORD AccessMask,
+ IN PSID pSid);
+
+
NTSTATUS STDCALL
RtlAddAccessDeniedAce (PACL Acl,
ULONG Revision,
IN ULONGLONG Start,
IN ULONGLONG End,
IN UCHAR Attributes,
- IN ULONG Flags,
+ IN ULONG Flags, /* RTL_RANGE_LIST_ADD_... flags */
IN PVOID UserData OPTIONAL,
IN PVOID Owner OPTIONAL);
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
RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG Revision);
+NTSTATUS STDCALL
+RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+ ULONG Revision);
+
+NTSTATUS
+STDCALL
+RtlCreateSystemVolumeInformationFolder(
+ IN PUNICODE_STRING VolumeRootPath
+ );
+
BOOLEAN STDCALL
RtlCreateUnicodeString (OUT PUNICODE_STRING Destination,
- IN PWSTR Source);
+ IN PCWSTR Source);
BOOLEAN STDCALL
RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
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);
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
RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList,
IN PVOID Owner);
NTSTATUS STDCALL
RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable);
-BOOL STDCALL
+HANDLE STDCALL
RtlDestroyHeap (HANDLE hheap);
+NTSTATUS
+STDCALL
+RtlDispatchException(
+ PEXCEPTION_RECORD pExcptRec,
+ CONTEXT * pContext
+ );
+
+
NTSTATUS
STDCALL
RtlDowncaseUnicodeString (
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);
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 (
VOID STDCALL
RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList);
-PSID STDCALL
+PVOID STDCALL
RtlFreeSid (PSID Sid);
VOID STDCALL
ULONG AceIndex,
PACE *Ace);
+VOID
+STDCALL
+RtlGetCallersAddress(
+ OUT PVOID *CallersAddress,
+ OUT PVOID *CallersCaller
+ );
+
NTSTATUS STDCALL
RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine,
OUT PULONG CompressBufferAndWorkSpaceSize,
RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage,
OUT PUSHORT OemCodePage);
+PVOID
+STDCALL
+RtlGetElementGenericTable(
+ PRTL_GENERIC_TABLE Table,
+ ULONG I
+ );
+
+PVOID
+STDCALL
+RtlGetElementGenericTableAvl (
+ PRTL_AVL_TABLE Table,
+ ULONG I
+ );
+
NTSTATUS STDCALL
RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList,
OUT PRTL_RANGE_LIST_ITERATOR Iterator,
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,
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
+RtlHashUnicodeString(
+ IN const UNICODE_STRING *String,
+ IN BOOLEAN CaseInSensitive,
+ IN ULONG HashAlgorithm,
+ OUT PULONG HashValue
+ );
+
PSID_IDENTIFIER_AUTHORITY STDCALL
RtlIdentifierAuthoritySid (PSID Sid);
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 (
STDCALL
RtlInitializeContext (
IN HANDLE ProcessHandle,
- IN PCONTEXT Context,
- IN PVOID Parameter,
- IN PTHREAD_START_ROUTINE StartAddress,
- IN OUT PUSER_STACK UserStack
+ OUT PCONTEXT ThreadContext,
+ IN PVOID ThreadStartParam OPTIONAL,
+ IN PTHREAD_START_ROUTINE ThreadStartAddress,
+ IN PINITIAL_TEB InitialTeb
);
VOID
STDCALL
RtlInitializeGenericTable (
- IN OUT PRTL_GENERIC_TABLE Table,
- IN PVOID CompareRoutine,
- IN PVOID AllocateRoutine,
- IN PVOID FreeRoutine,
- IN ULONG UserParameter
+ 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
PVOID
STDCALL
RtlInsertElementGenericTable (
- IN OUT PRTL_GENERIC_TABLE Table,
- IN PVOID Element,
- IN ULONG ElementSize,
- IN ULONG Unknown4
+ 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
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 (
RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
IN PRTL_RANGE_LIST RangeList);
-BOOLEAN STDCALL
-RtlIsGenericTableEmpty (IN PRTL_GENERIC_TABLE Table);
+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
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4StringToAddressExA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4StringToAddressW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv4StringToAddressExW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6AddressToStringA(
+ PULONG IP,
+ LPSTR Buffer
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6AddressToStringExA(
+ PULONG IP,
+ PULONG Port,
+ LPSTR Buffer,
+ PULONG MaxSize
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6AddressToStringW(
+ PULONG IP,
+ LPWSTR Buffer
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6AddressToStringExW(
+ PULONG IP,
+ PULONG Port,
+ LPWSTR Buffer,
+ PULONG MaxSize
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6StringToAddressA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6StringToAddressExA(
+ IN LPSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6StringToAddressW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PVOID PtrToIpAddr,
+ OUT ULONG IpAddr
+ );
+
+NTSTATUS
+STDCALL
+RtlIpv6StringToAddressExW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PULONG IpAddr,
+ OUT PULONG Port
+ );
+
+BOOLEAN
+STDCALL
+RtlIsGenericTableEmpty (
+ PRTL_GENERIC_TABLE Table
+ );
+
+BOOLEAN
+STDCALL
+RtlIsGenericTableEmptyAvl (
+ PRTL_AVL_TABLE Table
+ );
+
BOOLEAN STDCALL
RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
ULONG *Flags
);
+BOOLEAN
+STDCALL
+RtlIsValidOemCharacter (
+ IN PWCHAR Char
+ );
+
LARGE_INTEGER
STDCALL
RtlLargeIntegerAdd (
ULONG STDCALL
RtlLengthSid (PSID Sid);
-BOOL
+NTSTATUS
STDCALL
-RtlLockHeap (
- HANDLE hheap
+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
+RtlLookupElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+
+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
+RtlLookupElementGenericTableFullAvl (
+ PRTL_AVL_TABLE Table,
+ PVOID Buffer,
+ OUT PVOID *NodeOrParent,
+ OUT TABLE_SEARCH_RESULT *SearchResult
+ );
+
NTSTATUS STDCALL
RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
- PSECURITY_DESCRIPTOR RelSD,
+ PSECURITY_DESCRIPTOR_RELATIVE RelSD,
PULONG BufferLength);
VOID STDCALL
RtlMapGenericMask (PACCESS_MASK AccessMask,
PGENERIC_MAPPING GenericMapping);
+NTSTATUS
+STDCALL
+RtlMapSecurityErrorToNtStatus(
+ IN ULONG SecurityError
+ );
+
NTSTATUS STDCALL
RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
IN PRTL_RANGE_LIST RangeList1,
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 (
VOID STDCALL
RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
+VOID STDCALL
+RtlRaiseStatus(NTSTATUS Status);
+
ULONG STDCALL
RtlRandom (PULONG Seed);
-LPVOID
+ULONG
+STDCALL
+RtlRandomEx(
+ PULONG Seed
+ );
+
+PRTL_SPLAY_LINKS
STDCALL
+RtlRealPredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PRTL_SPLAY_LINKS
+STDCALL
+RtlRealSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PVOID STDCALL
RtlReAllocateHeap (
- HANDLE hheap,
- DWORD flags,
- LPVOID ptr,
- DWORD size
+ HANDLE Heap,
+ ULONG Flags,
+ PVOID Ptr,
+ ULONG Size
+ );
+
+VOID
+STDCALL
+RtlRemoveUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
);
NTSTATUS
VOID STDCALL
RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
+VOID STDCALL
+RtlRestoreLastWin32Error(IN ULONG Error);
+
/*
* VOID
* RtlRetrieveUlong (
* );
*/
#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]; \
PLARGE_INTEGER Time);
NTSTATUS STDCALL
-RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD,
+RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD,
PSECURITY_DESCRIPTOR AbsSD,
PULONG AbsSDSize,
PACL Dacl,
PSID Group,
PULONG GroupSize);
+NTSTATUS
+STDCALL
+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
+RtlSetBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
+
VOID
STDCALL
RtlSetBits (
ULONG NumberToSet
);
+NTSTATUS STDCALL
+RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
+ IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
+
NTSTATUS STDCALL
RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
BOOLEAN DaclPresent,
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,
PACL Sacl,
BOOLEAN SaclDefaulted);
-NTSTATUS STDCALL
-RtlSetInformationAcl (PACL Acl,
- PVOID Information,
- ULONG InformationLength,
- ACL_INFORMATION_CLASS InformationClass);
+VOID STDCALL
+RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PUCHAR RMControl);
NTSTATUS STDCALL
RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
-DWORD
+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)); \
PUCHAR STDCALL
RtlSubAuthorityCountSid (PSID Sid);
-PRTL_SPLAY_LINKS STDCALL
-RtlSubtreePredecessor (IN PRTL_SPLAY_LINKS Links);
+PRTL_SPLAY_LINKS
+STDCALL
+RtlSubtreePredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+PRTL_SPLAY_LINKS
+STDCALL
+RtlSubtreeSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+BOOLEAN
+STDCALL
+RtlTestBit (
+ PRTL_BITMAP BitMapHeader,
+ ULONG BitNumber
+ );
-PRTL_SPLAY_LINKS STDCALL
-RtlSubtreeSuccessor (IN PRTL_SPLAY_LINKS Links);
BOOLEAN STDCALL
RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
PULONG SecondsSince1980
);
+VOID
+STDCALL
+RtlTimeToElapsedTimeFields(
+ PLARGE_INTEGER Time,
+ PTIME_FIELDS TimeFields
+ );
+
VOID
STDCALL
RtlTimeToTimeFields (
PTIME_FIELDS TimeFields
);
+
ULONG FASTCALL
RtlUlongByteSwap (IN ULONG Source);
ULONG STDCALL
RtlUniform (PULONG Seed);
-BOOL
+BOOLEAN STDCALL
+RtlUnlockHeap (IN HANDLE Heap);
+
+NTSTATUS
STDCALL
-RtlUnlockHeap (
- HANDLE hheap
+RtlUnlockBootStatusData(
+ HANDLE Filehandle
);
VOID
BOOLEAN STDCALL
RtlValidAcl (PACL Acl);
-BOOL
-STDCALL
+BOOLEAN STDCALL
RtlValidateHeap (
- HANDLE hheap,
- DWORD flags,
+ HANDLE Heap,
+ ULONG Flags,
PVOID pmem
);
+BOOLEAN
+STDCALL
+RtlValidRelativeSecurityDescriptor (
+ IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+ IN ULONG SecurityDescriptorLength,
+ IN SECURITY_INFORMATION RequiredInformation
+ );
+
BOOLEAN STDCALL
RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
BOOLEAN STDCALL
RtlValidSid (IN PSID Sid);
+/*
+NTSTATUS
+STDCALL
+RtlVerifyVersionInfo(
+ IN PRTL_OSVERSIONINFOEXW VersionInfo,
+ IN ULONG TypeMask,
+ IN ULONGLONG ConditionMask
+ );
+*/
+
+NTSTATUS
+STDCALL
+RtlVolumeDeviceToDosName(
+ IN PVOID VolumeDeviceObject,
+ OUT PUNICODE_STRING DosName
+ );
+
+ULONG
+STDCALL
+RtlWalkFrameChain (
+ OUT PVOID *Callers,
+ IN ULONG Count,
+ IN ULONG Flags
+ );
+
+BOOLEAN STDCALL
+RtlZeroHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags
+ );
+
ULONG
STDCALL
RtlxAnsiStringToUnicodeSize (
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
#endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
#endif /* __DDK_RTL_H */
+
+