/* DEPENDENCIES **************************************************************/
#include <ntnls.h>
+#include "extypes.h"
+#include "rtltypes.h"
+
+/* MACROS ********************************************************************/
+
+/* FIXME: Eventually move the ones in rtltypes.h here... */
+
+/*
+ * Splay Tree Macros
+ */
+#define RtlIsLeftChild(Links) \
+ (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
+
+#define RtlRightChild(Links) \
+ (PRTL_SPLAY_LINKS)(Links)->RightChild
+
+#define RtlIsRoot(Links) \
+ (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
+
+#define RtlLeftChild(Links) \
+ (PRTL_SPLAY_LINKS)(Links)->LeftChild
+
+#define RtlParent(Links) \
+ (PRTL_SPLAY_LINKS)(Links)->Parent
/* PROTOTYPES ****************************************************************/
+/*
+ * Splay Tree Functions
+ */
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSplay(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlDelete(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDeleteNoSplay(
+ PRTL_SPLAY_LINKS Links,
+ PRTL_SPLAY_LINKS *Root
+);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreeSuccessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreePredecessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealSuccessor(PRTL_SPLAY_LINKS Links);
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealPredecessor(PRTL_SPLAY_LINKS Links);
+
/*
* Error and Exception Functions
*/
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlAddVectoredExceptionHandler(
IN ULONG FirstHandler,
IN PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlAssert(
PVOID FailedAssertion,
PVOID FileName,
PCHAR Message
);
+NTSYSAPI
+VOID
+NTAPI
+RtlCaptureContext(OUT PCONTEXT ContextRecord);
+
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlEncodePointer(IN PVOID Pointer);
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlDecodePointer(IN PVOID Pointer);
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDispatchException(
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT Context
+);
+
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlNtStatusToDosError(IN NTSTATUS Status);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlRaiseException(IN PEXCEPTION_RECORD ExceptionRecord);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlRaiseStatus(NTSTATUS Status);
+NTSYSAPI
LONG
-STDCALL
+NTAPI
RtlUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlUnwind(
- PEXCEPTION_REGISTRATION RegistrationFrame,
- PVOID ReturnAddress,
- PEXCEPTION_RECORD ExceptionRecord,
- DWORD EaxValue
+ IN PVOID TargetFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue
);
/*
* Heap Functions
*/
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlAllocateHeap(
IN HANDLE HeapHandle,
IN ULONG Flags,
IN ULONG Size
);
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlCreateHeap(
IN ULONG Flags,
IN PVOID BaseAddress OPTIONAL,
IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL
);
-DWORD
-STDCALL
+ULONG
+NTAPI
RtlCompactHeap(
HANDLE heap,
ULONG flags
);
+NTSYSAPI
HANDLE
-STDCALL
+NTAPI
RtlDestroyHeap(HANDLE hheap);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlFreeHeap(
IN HANDLE HeapHandle,
IN ULONG Flags,
);
ULONG
-STDCALL
+NTAPI
RtlGetProcessHeaps(
ULONG HeapCount,
HANDLE *HeapArray
);
PVOID
-STDCALL
+NTAPI
RtlReAllocateHeap(
HANDLE Heap,
ULONG Flags,
);
BOOLEAN
-STDCALL
+NTAPI
RtlLockHeap(IN HANDLE Heap);
BOOLEAN
-STDCALL
+NTAPI
RtlUnlockHeap(IN HANDLE Heap);
ULONG
-STDCALL
+NTAPI
RtlSizeHeap(
IN PVOID HeapHandle,
IN ULONG Flags,
);
BOOLEAN
-STDCALL
+NTAPI
RtlValidateHeap(
HANDLE Heap,
ULONG Flags,
/*
* Security Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAbsoluteToSelfRelativeSD(
IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
- IN OUT PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+ IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
IN PULONG BufferLength
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAddAccessAllowedAce(
PACL Acl,
ULONG Revision,
);
NTSTATUS
-STDCALL
+NTAPI
RtlAddAccessAllowedAceEx(
IN OUT PACL pAcl,
- IN DWORD dwAceRevision,
- IN DWORD AceFlags,
- IN DWORD AccessMask,
+ IN ULONG dwAceRevision,
+ IN ULONG AceFlags,
+ IN ULONG AccessMask,
IN PSID pSid
);
NTSTATUS
-STDCALL
+NTAPI
RtlAddAccessDeniedAce(
PACL Acl,
ULONG Revision,
);
NTSTATUS
-STDCALL
+NTAPI
RtlAddAccessDeniedAceEx(
IN OUT PACL Acl,
IN ULONG Revision,
);
NTSTATUS
-STDCALL
+NTAPI
RtlAddAuditAccessAceEx(
IN OUT PACL Acl,
IN ULONG Revision,
IN BOOLEAN Failure
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAddAce(
PACL Acl,
- ULONG Revision,
- ULONG StartingIndex,
- PACE AceList,
+ ULONG AceRevision,
+ ULONG StartingAceIndex,
+ PVOID AceList,
ULONG AceListLength
);
NTSTATUS
-STDCALL
+NTAPI
RtlAddAuditAccessAce(
PACL Acl,
ULONG Revision,
);
NTSTATUS
-STDCALL
+NTAPI
RtlAdjustPrivilege(
IN ULONG Privilege,
IN BOOLEAN NewValue,
OUT PBOOLEAN OldValue
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAllocateAndInitializeSid(
IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
IN UCHAR SubAuthorityCount,
);
BOOLEAN
-STDCALL
+NTAPI
RtlAreAllAccessesGranted(
ACCESS_MASK GrantedAccess,
ACCESS_MASK DesiredAccess
);
BOOLEAN
-STDCALL
+NTAPI
RtlAreAnyAccessesGranted(
ACCESS_MASK GrantedAccess,
ACCESS_MASK DesiredAccess
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlCopyLuid(
IN PLUID LuidDest,
IN PLUID LuidSrc
);
VOID
-STDCALL
+NTAPI
RtlCopyLuidAndAttributesArray(
ULONG Count,
PLUID_AND_ATTRIBUTES Src,
);
NTSTATUS
-STDCALL
+NTAPI
RtlCopySidAndAttributesArray(
ULONG Count,
PSID_AND_ATTRIBUTES Src,
);
NTSTATUS
-STDCALL
+NTAPI
RtlConvertSidToUnicodeString(
OUT PUNICODE_STRING DestinationString,
IN PSID Sid,
IN BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCopySid(
IN ULONG Length,
IN PSID Destination,
IN PSID Source
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateAcl(
PACL Acl,
ULONG AclSize,
ULONG AclRevision
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateSecurityDescriptor(
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG Revision
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateSecurityDescriptorRelative(
PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
ULONG Revision
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteAce(
PACL Acl,
ULONG AceIndex
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlEqualPrefixSid(
PSID Sid1,
PSID Sid2
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlEqualSid (
IN PSID Sid1,
IN PSID Sid2
);
BOOLEAN
-STDCALL
+NTAPI
RtlFirstFreeAce(
PACL Acl,
PACE* Ace
);
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlFreeSid (
IN PSID Sid
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetAce(
PACL Acl,
ULONG AceIndex,
- PACE *Ace
+ PVOID *Ace
);
NTSTATUS
-STDCALL
+NTAPI
RtlGetControlSecurityDescriptor(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PSECURITY_DESCRIPTOR_CONTROL Control,
PULONG Revision
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetDaclSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
OUT PBOOLEAN DaclPresent,
OUT PBOOLEAN DaclDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetSaclSecurityDescriptor(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PBOOLEAN SaclPresent,
PBOOLEAN SaclDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetGroupSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
OUT PSID *Group,
OUT PBOOLEAN GroupDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetOwnerSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
OUT PSID *Owner,
OUT PBOOLEAN OwnerDefaulted
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlGetSecurityDescriptorRMControl(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PUCHAR RMControl
);
+NTSYSAPI
PSID_IDENTIFIER_AUTHORITY
-STDCALL
+NTAPI
RtlIdentifierAuthoritySid(PSID Sid);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlInitializeSid(
IN OUT PSID Sid,
IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
IN UCHAR SubAuthorityCount
);
+NTSYSAPI
ULONG
-STDCALL
-RtlLengthRequiredSid(IN UCHAR SubAuthorityCount);
+NTAPI
+RtlLengthRequiredSid(IN ULONG SubAuthorityCount);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlLengthSid(IN PSID Sid);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlMapGenericMask(
PACCESS_MASK AccessMask,
PGENERIC_MAPPING GenericMapping
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryInformationAcl(
PACL Acl,
PVOID Information,
ACL_INFORMATION_CLASS InformationClass
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSelfRelativeToAbsoluteSD(
- IN PISECURITY_DESCRIPTOR_RELATIVE SelfRelativeSD,
+ IN PSECURITY_DESCRIPTOR SelfRelativeSD,
OUT PSECURITY_DESCRIPTOR AbsoluteSD,
IN PULONG AbsoluteSDSize,
IN PACL Dacl,
IN PULONG PrimaryGroupSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
+RtlSelfRelativeToAbsoluteSD2(
+ IN OUT PSECURITY_DESCRIPTOR SelfRelativeSD,
+ OUT PULONG BufferSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlSetControlSecurityDescriptor(
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetDaclSecurityDescriptor (
PSECURITY_DESCRIPTOR SecurityDescriptor,
BOOLEAN DaclPresent,
BOOLEAN DaclDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetGroupSecurityDescriptor(
IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN PSID Group,
IN BOOLEAN GroupDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetInformationAcl(
PACL Acl,
PVOID Information,
ACL_INFORMATION_CLASS InformationClass
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetOwnerSecurityDescriptor(
IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN PSID Owner,
IN BOOLEAN OwnerDefaulted
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetSaclSecurityDescriptor(
IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
IN BOOLEAN SaclPresent,
IN BOOLEAN SaclDefaulted
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlSetSecurityDescriptorRMControl(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PUCHAR RMControl
);
+NTSYSAPI
PUCHAR
-STDCALL
+NTAPI
RtlSubAuthorityCountSid(
IN PSID Sid
);
+NTSYSAPI
PULONG
-STDCALL
+NTAPI
RtlSubAuthoritySid(
IN PSID Sid,
IN ULONG SubAuthority
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlValidRelativeSecurityDescriptor(
- IN PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
IN ULONG SecurityDescriptorLength,
IN SECURITY_INFORMATION RequiredInformation
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlValidSid(IN PSID Sid);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlValidAcl(PACL Acl);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteSecurityObject(
IN PSECURITY_DESCRIPTOR *ObjectDescriptor
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlNewSecurityObject(
IN PSECURITY_DESCRIPTOR ParentDescriptor,
IN PSECURITY_DESCRIPTOR CreatorDescriptor,
IN PGENERIC_MAPPING GenericMapping
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQuerySecurityObject(
IN PSECURITY_DESCRIPTOR ObjectDescriptor,
IN SECURITY_INFORMATION SecurityInformation,
OUT PULONG ReturnLength
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetSecurityObject(
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR ModificationDescriptor,
/*
* Single-Character Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlLargeIntegerToChar(
IN PLARGE_INTEGER Value,
IN ULONG Base,
IN OUT PCHAR String
);
+NTSYSAPI
CHAR
-STDCALL
+NTAPI
RtlUpperChar(CHAR Source);
+NTSYSAPI
WCHAR
-STDCALL
+NTAPI
RtlUpcaseUnicodeChar(WCHAR Source);
+NTSYSAPI
WCHAR
-STDCALL
+NTAPI
RtlDowncaseUnicodeChar(IN WCHAR Source);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlIntegerToChar(
IN ULONG Value,
IN ULONG Base,
IN OUT PCHAR String
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlIntegerToUnicode(
IN ULONG Value,
IN ULONG Base OPTIONAL,
IN OUT LPWSTR String
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlIntegerToUnicodeString(
IN ULONG Value,
IN ULONG Base,
IN OUT PUNICODE_STRING String
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCharToInteger(
PCSZ String,
ULONG Base,
PULONG Value
);
+#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || ((defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
+unsigned short __cdecl _byteswap_ushort(unsigned short);
+unsigned long __cdecl _byteswap_ulong (unsigned long);
+unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
+#pragma intrinsic(_byteswap_ushort)
+#pragma intrinsic(_byteswap_ulong)
+#pragma intrinsic(_byteswap_uint64)
+#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
+#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
+#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
+#else
+
USHORT
FASTCALL
RtlUshortByteSwap(IN USHORT Source);
+ULONG
+FASTCALL
+RtlUlongByteSwap(IN ULONG Source);
+
+ULONGLONG
+FASTCALL
+RtlUlonglongByteSwap(IN ULONGLONG Source);
+
+#endif
+
/*
* Unicode->Ansi String Functions
*/
+NTSYSAPI
ULONG
-STDCALL
-RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString);
+NTAPI
+RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString);
+
+#ifdef NTOS_MODE_USER
+#define RtlUnicodeStringToAnsiSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToAnsiSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+#endif
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeStringToAnsiString(
PANSI_STRING DestinationString,
- PUNICODE_STRING SourceString,
+ PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
/*
* Unicode->OEM String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeStringToOemString(
POEM_STRING DestinationString,
- PUNICODE_STRING SourceString,
+ PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeStringToCountedOemString(
IN OUT POEM_STRING DestinationString,
- IN PUNICODE_STRING SourceString,
+ IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeStringToOemString(
POEM_STRING DestinationString,
- PUNICODE_STRING SourceString,
+ PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeToOemN(
PCHAR OemString,
ULONG OemSize,
ULONG UnicodeSize
);
+NTSYSAPI
ULONG
-STDCALL
-RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString);
+NTAPI
+RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString);
+
+#ifdef NTOS_MODE_USER
+#define RtlUnicodeStringToOemSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToOemSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+#define RtlUnicodeStringToCountedOemSize(STRING) ( \
+ (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(ANSI_NULL)) \
+)
+#endif
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeToOemN(
PCHAR OemString,
ULONG OemSize,
/*
* Unicode->MultiByte String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeToMultiByteN(
PCHAR MbString,
ULONG MbSize,
ULONG UnicodeSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeToMultiByteN(
PCHAR MbString,
ULONG MbSize,
ULONG UnicodeSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeToMultiByteSize(
PULONG MbSize,
PWCHAR UnicodeString,
ULONG UnicodeSize
);
+NTSYSAPI
+ULONG
+NTAPI
+RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString);
+
/*
* OEM to Unicode Functions
*/
-ULONG
-STDCALL
-RtlOemStringToUnicodeSize(POEM_STRING AnsiString);
+#ifdef NTOS_MODE_USER
+#define RtlOemStringToUnicodeSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxOemStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+#define RtlOemStringToCountedUnicodeSize(STRING) ( \
+ (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
+)
+#endif
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlOemStringToUnicodeString(
PUNICODE_STRING DestinationString,
- POEM_STRING SourceString,
+ PCOEM_STRING SourceString,
BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlOemToUnicodeN(
PWSTR UnicodeString,
ULONG MaxBytesInUnicodeString,
/*
* Ansi->Unicode String Functions
*/
+NTSYSAPI
+ULONG
+NTAPI
+RtlxAnsiStringToUnicodeSize(
+ PCANSI_STRING AnsiString
+);
+
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAnsiStringToUnicodeString(
PUNICODE_STRING DestinationString,
- PANSI_STRING SourceString,
+ PCANSI_STRING SourceString,
BOOLEAN AllocateDestinationString
);
-ULONG
-STDCALL
-RtlAnsiStringToUnicodeSize(
- PANSI_STRING AnsiString
-);
+#ifdef NTOS_MODE_USER
+#define RtlAnsiStringToUnicodeSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxAnsiStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+#endif
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlCreateUnicodeStringFromAsciiz(
OUT PUNICODE_STRING Destination,
IN PCSZ Source
/*
* Unicode String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAppendUnicodeToString(
PUNICODE_STRING Destination,
PCWSTR Source
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAppendUnicodeStringToString(
PUNICODE_STRING Destination,
- PUNICODE_STRING Source
+ PCUNICODE_STRING Source
);
+NTSYSAPI
LONG
-STDCALL
+NTAPI
RtlCompareUnicodeString(
- PUNICODE_STRING String1,
- PUNICODE_STRING String2,
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
BOOLEAN CaseInsensitive
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlCopyUnicodeString(
PUNICODE_STRING DestinationString,
- PUNICODE_STRING SourceString
+ PCUNICODE_STRING SourceString
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlCreateUnicodeString(
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);
+#ifdef NTOS_MODE_USER
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDowncaseUnicodeString(
IN OUT PUNICODE_STRING UniDest,
- IN PUNICODE_STRING UniSource,
+ IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString
);
+#endif
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDuplicateUnicodeString(
- IN INT AddNull,
- IN PUNICODE_STRING SourceString,
+ IN ULONG Flags,
+ IN PCUNICODE_STRING SourceString,
OUT PUNICODE_STRING DestinationString
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlEqualUnicodeString(
PCUNICODE_STRING String1,
PCUNICODE_STRING String2,
BOOLEAN CaseInsensitive
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlHashUnicodeString(
IN CONST UNICODE_STRING *String,
IN BOOLEAN CaseInSensitive,
OUT PULONG HashValue
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlIsTextUnicode(
PVOID Buffer,
ULONG Length,
ULONG *Flags
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlPrefixUnicodeString(
- PUNICODE_STRING String1,
- PUNICODE_STRING String2,
+ PCUNICODE_STRING String1,
+ PCUNICODE_STRING String2,
BOOLEAN CaseInsensitive
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeString(
PUNICODE_STRING DestinationString,
PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeStringToInteger(
- PUNICODE_STRING String,
+ PCUNICODE_STRING String,
ULONG Base,
PULONG Value
);
/*
* Ansi String Functions
*/
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlFreeAnsiString(IN PANSI_STRING AnsiString);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitAnsiString(
PANSI_STRING DestinationString,
PCSZ SourceString
/*
* OEM String Functions
*/
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlFreeOemString(IN POEM_STRING OemString);
/*
* MultiByte->Unicode String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlMultiByteToUnicodeN(
PWCHAR UnicodeString,
ULONG UnicodeSize,
PULONG ResultSize,
- const PCHAR MbString,
+ PCSTR MbString,
ULONG MbSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlMultiByteToUnicodeSize(
PULONG UnicodeSize,
- PCHAR MbString,
+ PCSTR MbString,
ULONG MbSize
);
/*
* Atom Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAddAtomToAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN PWSTR AtomName,
OUT PRTL_ATOM Atom
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateAtomTable(
IN ULONG TableSize,
IN OUT PRTL_ATOM_TABLE *AtomTable
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteAtomFromAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN RTL_ATOM Atom
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryAtomInAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN RTL_ATOM Atom,
IN OUT PULONG NameLength OPTIONAL
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlLookupAtomInAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN PWSTR AtomName,
/*
* Memory Functions
*/
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlFillMemoryUlong(
IN PVOID Destination,
IN ULONG Length,
/*
* Process Management Functions
*/
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlAcquirePebLock(VOID);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateProcessParameters (
OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
IN PUNICODE_STRING ImagePathName OPTIONAL,
IN PUNICODE_STRING RuntimeInfo OPTIONAL
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateUserProcess(
IN PUNICODE_STRING ImageFileName,
IN ULONG Attributes,
OUT PRTL_USER_PROCESS_INFORMATION ProcessInfo
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateUserThread(
IN HANDLE ProcessHandle,
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN OUT PCLIENT_ID ClientId
);
+NTSYSAPI
PRTL_USER_PROCESS_PARAMETERS
-STDCALL
+NTAPI
RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlExitUserThread(NTSTATUS Status);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitializeContext(
IN HANDLE ProcessHandle,
OUT PCONTEXT ThreadContext,
IN PINITIAL_TEB InitialTeb
);
+NTSYSAPI
PRTL_USER_PROCESS_PARAMETERS
-STDCALL
+NTAPI
RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlReleasePebLock(VOID);
+NTSYSAPI
+VOID
+NTAPI
+RtlSetProcessIsCritical(
+ IN BOOLEAN NewValue,
+ OUT PBOOLEAN OldValue OPTIONAL,
+ IN BOOLEAN IsWinlogon
+);
+
/*
* Environment/Path Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateEnvironment(
BOOLEAN Inherit,
PWSTR *Environment
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlDestroyEnvironment(PWSTR Environment);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlDoesFileExists_U(PWSTR FileName);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlDetermineDosPathNameType_U(PCWSTR Path);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlDosSearchPath_U(
WCHAR *sp,
WCHAR *name,
WCHAR **shortname
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlDosPathNameToNtPathName_U(
PWSTR DosName,
PUNICODE_STRING NtName,
PCURDIR CurrentDirectory
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlExpandEnvironmentStrings_U(
PWSTR Environment,
PUNICODE_STRING Source,
PULONG Length
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlGetCurrentDirectory_U(
ULONG MaximumLength,
PWSTR Buffer
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlGetFullPathName_U(
const WCHAR *dosname,
ULONG size,
WCHAR **shortname
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlIsNameLegalDOS8Dot3(
IN PUNICODE_STRING UnicodeName,
IN PANSI_STRING AnsiName,
PBOOLEAN Unknown
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryEnvironmentVariable_U(
PWSTR Environment,
PUNICODE_STRING Name,
PUNICODE_STRING Value
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetCurrentDirectory_U(PUNICODE_STRING name);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetEnvironmentVariable(
PWSTR *Environment,
PUNICODE_STRING Name,
/*
* Critical Section/Resource Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteCriticalSection (
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlEnterCriticalSection(
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlInitializeCriticalSection(
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlInitializeCriticalSectionAndSpinCount(
IN PRTL_CRITICAL_SECTION CriticalSection,
IN ULONG SpinCount
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlLeaveCriticalSection(
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlpUnWaitCriticalSection(
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlpWaitForCriticalSection(
IN PRTL_CRITICAL_SECTION CriticalSection
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlAcquireResourceExclusive(
IN PRTL_RESOURCE Resource,
IN BOOLEAN Wait
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlAcquireResourceShared(
IN PRTL_RESOURCE Resource,
IN BOOLEAN Wait
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlConvertExclusiveToShared(
IN PRTL_RESOURCE Resource
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlConvertSharedToExclusive(
IN PRTL_RESOURCE Resource
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlDeleteResource(
IN PRTL_RESOURCE Resource
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlDumpResource(
IN PRTL_RESOURCE Resource
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitializeResource(
IN PRTL_RESOURCE Resource
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlReleaseResource(
IN PRTL_RESOURCE Resource
);
/*
* Compression Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCompressBuffer(
IN USHORT CompressionFormatAndEngine,
IN PUCHAR UncompressedBuffer,
IN PVOID WorkSpace
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDecompressBuffer(
IN USHORT CompressionFormat,
OUT PUCHAR UncompressedBuffer,
OUT PULONG FinalUncompressedSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetCompressionWorkSpaceSize(
IN USHORT CompressionFormatAndEngine,
OUT PULONG CompressBufferWorkSpaceSize,
/*
* Debug Info Functions
*/
+NTSYSAPI
PDEBUG_BUFFER
-STDCALL
+NTAPI
RtlCreateQueryDebugBuffer(
IN ULONG Size,
IN BOOLEAN EventPair
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryProcessDebugInformation(
IN ULONG ProcessId,
IN ULONG DebugInfoClassMask,
/*
* Bitmap Functions
*/
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlAreBitsClear(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG Length
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlAreBitsSet(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG Length
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlClearBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
IN ULONG NumberToClear
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlFindClearBits(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlFindClearBitsAndSet(
IN PRTL_BITMAP BitMapHeader,
IN ULONG NumberToFind,
IN ULONG HintIndex
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitializeBitMap(
IN PRTL_BITMAP BitMapHeader,
IN PULONG BitMapBuffer,
IN ULONG SizeOfBitMap
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlSetBits (
IN PRTL_BITMAP BitMapHeader,
IN ULONG StartingIndex,
/*
* Timer Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateTimer(
HANDLE TimerQueue,
PHANDLE phNewTimer,
WAITORTIMERCALLBACKFUNC Callback,
PVOID Parameter,
- DWORD DueTime,
- DWORD Period,
+ ULONG DueTime,
+ ULONG Period,
ULONG Flags
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCreateTimerQueue(PHANDLE TimerQueue);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteTimer(
HANDLE TimerQueue,
HANDLE Timer,
HANDLE CompletionEvent
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpdateTimer(
HANDLE TimerQueue,
HANDLE Timer,
ULONG Period
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteTimerQueueEx(
HANDLE TimerQueue,
HANDLE CompletionEvent
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteTimerQueue(HANDLE TimerQueue);
/*
* Debug Functions
*/
ULONG
-CDECL
+__cdecl
DbgPrint(
IN PCH Format,
IN ...
);
VOID
-STDCALL
+NTAPI
DbgBreakPoint(VOID);
/*
* Handle Table Functions
*/
+NTSYSAPI
PRTL_HANDLE_TABLE_ENTRY
-STDCALL
+NTAPI
RtlAllocateHandle(
IN PRTL_HANDLE_TABLE HandleTable,
IN OUT PULONG Index
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlFreeHandle(
IN PRTL_HANDLE_TABLE HandleTable,
IN PRTL_HANDLE_TABLE_ENTRY Handle
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitializeHandleTable(
IN ULONG TableSize,
IN ULONG HandleSize,
IN PRTL_HANDLE_TABLE HandleTable
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlIsValidHandle(
IN PRTL_HANDLE_TABLE HandleTable,
IN PRTL_HANDLE_TABLE_ENTRY Handle
);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlIsValidIndexHandle(
IN PRTL_HANDLE_TABLE HandleTable,
IN ULONG Index,
/*
* PE Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlFindMessage(
IN PVOID BaseAddress,
IN ULONG Type,
OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlGetNtGlobalFlags(VOID);
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlImageDirectoryEntryToData(
PVOID BaseAddress,
BOOLEAN bFlag,
PULONG Size
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlImageRvaToVa(
PIMAGE_NT_HEADERS NtHeader,
PVOID BaseAddress,
PIMAGE_SECTION_HEADER *SectionHeader
);
+NTSYSAPI
PIMAGE_NT_HEADERS
-STDCALL
+NTAPI
RtlImageNtHeader(IN PVOID BaseAddress);
+NTSYSAPI
PIMAGE_SECTION_HEADER
-STDCALL
+NTAPI
RtlImageRvaToSection(
PIMAGE_NT_HEADERS NtHeader,
PVOID BaseAddress,
/*
* Registry Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlCheckRegistryKey(
ULONG RelativeTo,
PWSTR Path
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlpNtOpenKey(
OUT HANDLE KeyHandle,
IN ACCESS_MASK DesiredAccess,
IN ULONG Unused
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlOpenCurrentUser(
IN ACCESS_MASK DesiredAccess,
OUT PHANDLE KeyHandle
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryRegistryValues(
IN ULONG RelativeTo,
IN PCWSTR Path,
IN PVOID Environment
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlWriteRegistryValue(
ULONG RelativeTo,
PCWSTR Path,
/*
* NLS Functions
*/
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitNlsTables(
IN PUSHORT AnsiTableBase,
IN PUSHORT OemTableBase,
OUT PNLSTABLEINFO NlsTable
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitCodePageTable(
IN PUSHORT TableBase,
OUT PCPTABLEINFO CodePageTable
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
/*
* Misc conversion functions
*/
+#if defined(NTOS_MODE_USER) && !defined(NO_RTL_INLINES)
+static __inline
LARGE_INTEGER
-STDCALL
-RtlConvertLongToLargeInteger(IN LONG SignedInteger);
+NTAPI_INLINE
+RtlConvertLongToLargeInteger(LONG SignedInteger)
+{
+ LARGE_INTEGER Result;
+ Result.QuadPart = SignedInteger;
+ return Result;
+}
+
+static __inline
LARGE_INTEGER
-STDCALL
+NTAPI_INLINE
RtlEnlargedIntegerMultiply(
LONG Multiplicand,
- LONG Multiplier
-);
+ LONG Multiplier)
+{
+ LARGE_INTEGER Product;
+ Product.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+
+static __inline
ULONG
-STDCALL
+NTAPI_INLINE
RtlEnlargedUnsignedDivide(
- ULARGE_INTEGER Dividend,
- ULONG Divisor,
- PULONG Remainder
-);
+ IN ULARGE_INTEGER Dividend,
+ IN ULONG Divisor,
+ IN PULONG Remainder OPTIONAL)
+{
+ ULONG Quotient;
+
+ Quotient = (ULONG)(Dividend.QuadPart / Divisor);
+ if (Remainder) {
+ *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
+ }
+ return Quotient;
+}
+
+static __inline
LARGE_INTEGER
-STDCALL
+NTAPI_INLINE
RtlEnlargedUnsignedMultiply(
ULONG Multiplicand,
- ULONG Multiplier
-);
+ ULONG Multiplier)
+{
+ LARGE_INTEGER Product;
+ Product.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+#endif
+
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlUniform(PULONG Seed);
+/*
+ * Network Functions
+ */
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlIpv4StringToAddressW(
+ IN LPWSTR IpString,
+ IN ULONG Base,
+ OUT PULONG PtrToIpAddr,
+ OUT PULONG IpAddr
+);
+
/*
* Time Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlSecondsSince1970ToTime(
IN ULONG SecondsSince1970,
OUT PLARGE_INTEGER Time
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSetTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlTimeFieldsToTime(
PTIME_FIELDS TimeFields,
PLARGE_INTEGER Time
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlTimeToTimeFields(
PLARGE_INTEGER Time,
PTIME_FIELDS TimeFields
/*
* Version Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlVerifyVersionInfo(
IN PRTL_OSVERSIONINFOEXW VersionInfo,
IN ULONG TypeMask,
IN ULONGLONG ConditionMask
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlGetNtProductType(OUT PNT_PRODUCT_TYPE ProductType);
+
+static __inline struct _PEB* NtCurrentPeb (void)
+{
+ struct _PEB * pPeb;
+
+#if defined(__GNUC__)
+
+ __asm__ __volatile__
+ (
+ "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */
+ : "=r" (pPeb) /* can't have two memory operands */
+ : /* no inputs */
+ );
+
+#elif defined(_MSC_VER)
+
+ __asm mov eax, fs:0x30;
+ __asm mov pPeb, eax
+
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+ return pPeb;
+}
#endif