#define _RTLFUNCS_H
/* DEPENDENCIES **************************************************************/
-#include <ndk/rtltypes.h>
-#include <ndk/pstypes.h>
+#include <ntnls.h>
/* PROTOTYPES ****************************************************************/
-/* FIXME: FILE NEEDS TO BE CLEANED UP AT THE END WHEN ALL THE FUNCTIONS HAVE BEEN ADDED */
-
-/* List Macros */
-static __inline
-VOID
-InitializeListHead(
- IN PLIST_ENTRY ListHead)
-{
- ListHead->Flink = ListHead->Blink = ListHead;
-}
-
-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;
-}
-
-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;
-}
-
-#define IsListEmpty(ListHead) \
- ((ListHead)->Flink == (ListHead))
-
-#define PopEntryList(ListHead) \
- (ListHead)->Next; \
- { \
- PSINGLE_LIST_ENTRY _FirstEntry; \
- _FirstEntry = (ListHead)->Next; \
- if (_FirstEntry != NULL) \
- (ListHead)->Next = _FirstEntry->Next; \
- }
-
-#define PushEntryList(_ListHead, _Entry) \
- (_Entry)->Next = (_ListHead)->Next; \
- (_ListHead)->Next = (_Entry); \
-
-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);
-}
-
-static __inline
-PLIST_ENTRY
-RemoveHeadList(
- IN PLIST_ENTRY ListHead)
-{
- PLIST_ENTRY Flink;
- PLIST_ENTRY Entry;
-
- Entry = ListHead->Flink;
- Flink = Entry->Flink;
- ListHead->Flink = Flink;
- Flink->Blink = ListHead;
- return 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 IsFirstEntry(ListHead, Entry) \
- ((ListHead)->Flink == Entry)
-
-#define IsLastEntry(ListHead, Entry) \
- ((ListHead)->Blink == Entry)
-
-#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));\
-}
-
-#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));\
-}
-
/*
- * Debug Functions
+ * Error and Exception Functions
*/
-
-ULONG
-CDECL
-DbgPrint(
- IN PCH Format,
- IN ...
+NTSYSAPI
+PVOID
+NTAPI
+RtlAddVectoredExceptionHandler(
+ IN ULONG FirstHandler,
+ IN PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
+NTSYSAPI
VOID
-STDCALL
-DbgBreakPoint(VOID);
-
-VOID
-STDCALL
+NTAPI
RtlAssert(
PVOID FailedAssertion,
PVOID FileName,
PCHAR Message
);
+NTSYSAPI
+PVOID
+NTAPI
+RtlEncodePointer(IN PVOID Pointer);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlDecodePointer(IN PVOID Pointer);
+
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlNtStatusToDosError(IN NTSTATUS Status);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlRaiseException(IN PEXCEPTION_RECORD ExceptionRecord);
-VOID
-STDCALL
+NTSYSAPI
+VOID
+NTAPI
RtlRaiseStatus(NTSTATUS Status);
+NTSYSAPI
+LONG
+NTAPI
+RtlUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo);
+
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlUnwind(
- PEXCEPTION_REGISTRATION RegistrationFrame,
- PVOID ReturnAddress,
- PEXCEPTION_RECORD ExceptionRecord,
- DWORD EaxValue
+ PEXCEPTION_REGISTRATION RegistrationFrame,
+ PVOID ReturnAddress,
+ PEXCEPTION_RECORD ExceptionRecord,
+ ULONG EaxValue
);
/*
- * Heap Functions
+ * 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 ULONG SizeToReserve OPTIONAL,
- IN ULONG SizeToCommit OPTIONAL,
+ IN SIZE_T SizeToReserve OPTIONAL,
+ IN SIZE_T SizeToCommit OPTIONAL,
IN PVOID Lock OPTIONAL,
- IN PRTL_HEAP_DEFINITION Definition OPTIONAL
+ IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL
);
-HANDLE
-STDCALL
+ULONG
+NTAPI
+RtlCompactHeap(
+ HANDLE heap,
+ ULONG flags
+);
+
+NTSYSAPI
+HANDLE
+NTAPI
RtlDestroyHeap(HANDLE hheap);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlFreeHeap(
IN HANDLE HeapHandle,
IN ULONG Flags,
IN PVOID P
);
-PVOID
-STDCALL
+ULONG
+NTAPI
+RtlGetProcessHeaps(
+ ULONG HeapCount,
+ HANDLE *HeapArray
+);
+
+PVOID
+NTAPI
RtlReAllocateHeap(
HANDLE Heap,
ULONG Flags,
ULONG Size
);
-BOOLEAN
-STDCALL
+BOOLEAN
+NTAPI
RtlLockHeap(IN HANDLE Heap);
-BOOLEAN
-STDCALL
+BOOLEAN
+NTAPI
RtlUnlockHeap(IN HANDLE Heap);
-ULONG
-STDCALL
+ULONG
+NTAPI
RtlSizeHeap(
- IN PVOID HeapHandle,
- IN ULONG Flags,
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
IN PVOID MemoryPointer
);
-
-BOOLEAN
-STDCALL
+
+BOOLEAN
+NTAPI
RtlValidateHeap(
HANDLE Heap,
ULONG Flags,
/*
* Security Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAbsoluteToSelfRelativeSD(
IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
- IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+ IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
IN PULONG BufferLength
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAddAccessAllowedAce(
PACL Acl,
ULONG Revision,
PSID Sid
);
-NTSTATUS
-STDCALL
+NTSTATUS
+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
+NTSTATUS
+NTAPI
RtlAddAccessDeniedAce(
PACL Acl,
ULONG Revision,
PSID Sid
);
-NTSTATUS
-STDCALL
+NTSTATUS
+NTAPI
RtlAddAccessDeniedAceEx(
IN OUT PACL Acl,
IN ULONG Revision,
IN PSID Sid
);
-NTSTATUS
-STDCALL
+NTSTATUS
+NTAPI
RtlAddAuditAccessAceEx(
IN OUT PACL Acl,
IN ULONG Revision,
IN BOOLEAN Failure
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlAddAce(
PACL Acl,
- ULONG Revision,
- ULONG StartingIndex,
- PACE AceList,
+ ULONG AceRevision,
+ ULONG StartingAceIndex,
+ PVOID AceList,
ULONG AceListLength
);
-NTSTATUS
-STDCALL
+NTSTATUS
+NTAPI
RtlAddAuditAccessAce(
PACL Acl,
ULONG Revision,
BOOLEAN Success,
BOOLEAN Failure
);
-
+
NTSTATUS
-STDCALL
+NTAPI
+RtlAdjustPrivilege(
+ IN ULONG Privilege,
+ IN BOOLEAN NewValue,
+ IN BOOLEAN ForThread,
+ OUT PBOOLEAN OldValue
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlAllocateAndInitializeSid(
IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
IN UCHAR SubAuthorityCount,
OUT PSID *Sid
);
-BOOLEAN
-STDCALL
+BOOLEAN
+NTAPI
RtlAreAllAccessesGranted(
ACCESS_MASK GrantedAccess,
ACCESS_MASK DesiredAccess
);
-BOOLEAN
-STDCALL
+BOOLEAN
+NTAPI
RtlAreAnyAccessesGranted(
ACCESS_MASK GrantedAccess,
ACCESS_MASK DesiredAccess
);
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlCopyLuid(
IN PLUID LuidDest,
IN PLUID LuidSrc
);
-VOID
-STDCALL
+VOID
+NTAPI
RtlCopyLuidAndAttributesArray(
ULONG Count,
PLUID_AND_ATTRIBUTES Src,
PLUID_AND_ATTRIBUTES Dest
);
-
-NTSTATUS
-STDCALL
+
+NTSTATUS
+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
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlCreateSecurityDescriptorRelative(
- PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
+ PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
ULONG Revision
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlDeleteAce(
PACL Acl,
ULONG AceIndex
);
-BOOLEAN
-STDCALL
+NTSYSAPI
+BOOLEAN
+NTAPI
RtlEqualPrefixSid(
PSID Sid1,
PSID Sid2
);
-
+
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlEqualSid (
IN PSID Sid1,
IN PSID Sid2
);
-BOOLEAN
-STDCALL
+BOOLEAN
+NTAPI
RtlFirstFreeAce(
PACL Acl,
PACE* Ace
);
+NTSYSAPI
PVOID
-STDCALL
+NTAPI
RtlFreeSid (
IN PSID Sid
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlGetAce(
PACL Acl,
ULONG AceIndex,
- PACE *Ace
+ PVOID *Ace
);
-NTSTATUS
-STDCALL
+NTSTATUS
+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
);
-BOOLEAN
-STDCALL
+NTSYSAPI
+BOOLEAN
+NTAPI
RtlGetSecurityDescriptorRMControl(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PUCHAR RMControl
);
-
-PSID_IDENTIFIER_AUTHORITY
-STDCALL
+
+NTSYSAPI
+PSID_IDENTIFIER_AUTHORITY
+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);
-NTSTATUS
-STDCALL
+NTSYSAPI
+VOID
+NTAPI
+RtlMapGenericMask(
+ PACCESS_MASK AccessMask,
+ PGENERIC_MAPPING GenericMapping
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlQueryInformationAcl(
PACL Acl,
PVOID Information,
ACL_INFORMATION_CLASS InformationClass
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlSelfRelativeToAbsoluteSD(
- IN PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSD,
+ IN PSECURITY_DESCRIPTOR SelfRelativeSD,
OUT PSECURITY_DESCRIPTOR AbsoluteSD,
IN PULONG AbsoluteSDSize,
IN PACL Dacl,
IN PULONG PrimaryGroupSize
);
-NTSTATUS
-STDCALL
+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
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+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
);
-VOID
-STDCALL
+NTSYSAPI
+VOID
+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 PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
IN ULONG SecurityDescriptorLength,
IN SECURITY_INFORMATION RequiredInformation
);
-BOOLEAN
-STDCALL
+NTSYSAPI
+BOOLEAN
+NTAPI
RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor);
+NTSYSAPI
BOOLEAN
-STDCALL
+NTAPI
RtlValidSid(IN PSID Sid);
-BOOLEAN
-STDCALL
+NTSYSAPI
+BOOLEAN
+NTAPI
RtlValidAcl(PACL Acl);
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteSecurityObject(
+ IN PSECURITY_DESCRIPTOR *ObjectDescriptor
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlNewSecurityObject(
+ IN PSECURITY_DESCRIPTOR ParentDescriptor,
+ IN PSECURITY_DESCRIPTOR CreatorDescriptor,
+ OUT PSECURITY_DESCRIPTOR *NewDescriptor,
+ IN BOOLEAN IsDirectoryObject,
+ IN HANDLE Token,
+ IN PGENERIC_MAPPING GenericMapping
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQuerySecurityObject(
+ IN PSECURITY_DESCRIPTOR ObjectDescriptor,
+ IN SECURITY_INFORMATION SecurityInformation,
+ OUT PSECURITY_DESCRIPTOR ResultantDescriptor,
+ IN ULONG DescriptorLength,
+ OUT PULONG ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetSecurityObject(
+ IN SECURITY_INFORMATION SecurityInformation,
+ IN PSECURITY_DESCRIPTOR ModificationDescriptor,
+ OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+ IN PGENERIC_MAPPING GenericMapping,
+ IN HANDLE Token
+);
+
/*
* Single-Character Functions
*/
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlLargeIntegerToChar(
IN PLARGE_INTEGER Value,
IN ULONG Base,
IN ULONG Length,
IN OUT PCHAR String
);
-
-CHAR
-STDCALL
+
+NTSYSAPI
+CHAR
+NTAPI
RtlUpperChar(CHAR Source);
+NTSYSAPI
WCHAR
-STDCALL
+NTAPI
RtlUpcaseUnicodeChar(WCHAR Source);
-
-WCHAR
-STDCALL
+
+NTSYSAPI
+WCHAR
+NTAPI
RtlDowncaseUnicodeChar(IN WCHAR Source);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlIntegerToChar(
IN ULONG Value,
IN ULONG Base,
IN OUT PCHAR String
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+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
);
-
-USHORT
+
+#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
- */
+ * 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
-RtlUpcaseUnicodeString(
- PUNICODE_STRING DestinationString,
- PCUNICODE_STRING SourceString,
- BOOLEAN AllocateDestinationString
-);
-
-NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeStringToOemString(
POEM_STRING DestinationString,
- PUNICODE_STRING SourceString,
+ PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
-
+
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeToOemN(
PCHAR OemString,
ULONG OemSize,
PWCHAR UnicodeString,
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,
PWCHAR UnicodeString,
ULONG UnicodeSize
);
-
+
/*
- * Unicode->MultiByte String Functions
+ * Unicode->MultiByte String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUnicodeToMultiByteN(
PCHAR MbString,
ULONG MbSize,
ULONG UnicodeSize
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlUpcaseUnicodeToMultiByteN(
PCHAR MbString,
ULONG MbSize,
PWCHAR UnicodeString,
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,
IN PCHAR OemString,
ULONG BytesInOemString
);
-
-/*
- * Ansi->Multibyte String Functions
- */
-
+
/*
* Ansi->Unicode String Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlAnsiStringToUnicodeString(
PUNICODE_STRING DestinationString,
- PANSI_STRING SourceString,
+ PCANSI_STRING SourceString,
BOOLEAN AllocateDestinationString
);
-
-ULONG
-STDCALL
-RtlAnsiStringToUnicodeSize(
- PANSI_STRING AnsiString
-);
-
-BOOLEAN
-STDCALL
+
+#ifdef NTOS_MODE_USER
+#define RtlAnsiStringToUnicodeSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxAnsiStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+#endif
+
+NTSYSAPI
+BOOLEAN
+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
);
-VOID
-STDCALL
+NTSYSAPI
+VOID
+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
+NTAPI
+RtlDowncaseUnicodeString(
+ IN OUT PUNICODE_STRING UniDest,
+ IN PCUNICODE_STRING UniSource,
+ IN BOOLEAN AllocateDestinationString
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDuplicateUnicodeString(
+ 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
+NTAPI
+RtlHashUnicodeString(
+ IN CONST UNICODE_STRING *String,
+ IN BOOLEAN CaseInSensitive,
+ IN ULONG HashAlgorithm,
+ OUT PULONG HashValue
+);
+
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlInitUnicodeString(
- IN OUT PUNICODE_STRING DestinationString,
- IN PCWSTR SourceString);
+ IN OUT PUNICODE_STRING DestinationString,
+ IN PCWSTR SourceString);
+NTSYSAPI
+ULONG
+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
+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
*/
-VOID
-STDCALL
+NTSYSAPI
+VOID
+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
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryAtomInAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN RTL_ATOM Atom,
IN OUT PWSTR AtomName OPTIONAL,
IN OUT PULONG NameLength OPTIONAL
);
-
+
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlLookupAtomInAtomTable(
IN PRTL_ATOM_TABLE AtomTable,
IN PWSTR AtomName,
/*
* Memory Functions
*/
-SIZE_T
-STDCALL
-RtlCompareMemory(
- IN const VOID *Source1,
- IN const VOID *Source2,
- IN SIZE_T Length
-);
-
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlFillMemoryUlong(
IN PVOID Destination,
IN ULONG Length,
IN ULONG Fill
);
-
+
/*
* Process Management Functions
- */
+ */
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlAcquirePebLock(VOID);
-VOID
-STDCALL
-RtlReleasePebLock(VOID);
-
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateProcessParameters (
+ OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
+ IN PUNICODE_STRING ImagePathName OPTIONAL,
+ IN PUNICODE_STRING DllPath OPTIONAL,
+ IN PUNICODE_STRING CurrentDirectory OPTIONAL,
+ IN PUNICODE_STRING CommandLine OPTIONAL,
+ IN PWSTR Environment OPTIONAL,
+ IN PUNICODE_STRING WindowTitle OPTIONAL,
+ IN PUNICODE_STRING DesktopInfo OPTIONAL,
+ IN PUNICODE_STRING ShellInfo OPTIONAL,
+ IN PUNICODE_STRING RuntimeInfo OPTIONAL
+);
+
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
+RtlCreateUserProcess(
+ IN PUNICODE_STRING ImageFileName,
+ IN ULONG Attributes,
+ IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
+ IN PSECURITY_DESCRIPTOR ProcessSecutityDescriptor OPTIONAL,
+ IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
+ IN HANDLE ParentProcess OPTIONAL,
+ IN BOOLEAN CurrentDirectory,
+ IN HANDLE DebugPort OPTIONAL,
+ IN HANDLE ExceptionPort OPTIONAL,
+ OUT PRTL_USER_PROCESS_INFORMATION ProcessInfo
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlCreateUserThread(
IN HANDLE ProcessHandle,
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN BOOLEAN CreateSuspended,
IN LONG StackZeroBits,
- IN OUT PULONG StackReserve,
- IN OUT PULONG StackCommit,
+ IN ULONG StackReserve,
+ IN ULONG StackCommit,
IN PTHREAD_START_ROUTINE StartAddress,
IN PVOID Parameter,
IN OUT PHANDLE ThreadHandle,
IN OUT PCLIENT_ID ClientId
);
+NTSYSAPI
PRTL_USER_PROCESS_PARAMETERS
-STDCALL
-RtlDeNormalizeProcessParams(
- IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+NTAPI
+RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlExitUserThread(NTSTATUS Status);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeContext(
+ IN HANDLE ProcessHandle,
+ OUT PCONTEXT ThreadContext,
+ IN PVOID ThreadStartParam OPTIONAL,
+ IN PTHREAD_START_ROUTINE ThreadStartAddress,
+ IN PINITIAL_TEB InitialTeb
+);
+
+NTSYSAPI
+PRTL_USER_PROCESS_PARAMETERS
+NTAPI
+RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlReleasePebLock(VOID);
+
+/*
+ * Environment/Path Functions
+ */
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateEnvironment(
+ BOOLEAN Inherit,
+ PWSTR *Environment
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDestroyEnvironment(PWSTR Environment);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDoesFileExists_U(PWSTR FileName);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlDetermineDosPathNameType_U(PCWSTR Path);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlDosSearchPath_U(
+ WCHAR *sp,
+ WCHAR *name,
+ WCHAR *ext,
+ ULONG buf_sz,
+ WCHAR *buffer,
+ WCHAR **shortname
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDosPathNameToNtPathName_U(
+ PWSTR DosName,
+ PUNICODE_STRING NtName,
+ PWSTR *ShortName,
+ PCURDIR CurrentDirectory
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlExpandEnvironmentStrings_U(
PWSTR Environment,
PUNICODE_STRING Source,
PULONG Length
);
-PRTL_USER_PROCESS_PARAMETERS
-STDCALL
-RtlNormalizeProcessParams(
- IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetCurrentDirectory_U(
+ ULONG MaximumLength,
+ PWSTR Buffer
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetFullPathName_U(
+ const WCHAR *dosname,
+ ULONG size,
+ WCHAR *buf,
+ WCHAR **shortname
+);
+
+NTSYSAPI
+BOOLEAN
+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
+NTAPI
+RtlSetCurrentDirectory_U(PUNICODE_STRING name);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetEnvironmentVariable(
+ PWSTR *Environment,
+ PUNICODE_STRING Name,
+ PUNICODE_STRING Value
+);
+
/*
* Critical Section/Resource Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlDeleteCriticalSection (
- PRTL_CRITICAL_SECTION CriticalSection
+ IN PRTL_CRITICAL_SECTION CriticalSection
);
-
+
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlEnterCriticalSection(
- PRTL_CRITICAL_SECTION CriticalSection
+ IN PRTL_CRITICAL_SECTION CriticalSection
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlInitializeCriticalSection(
- PRTL_CRITICAL_SECTION CriticalSection
+ IN PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeCriticalSectionAndSpinCount(
+ IN PRTL_CRITICAL_SECTION CriticalSection,
+ IN ULONG SpinCount
);
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlLeaveCriticalSection(
- PRTL_CRITICAL_SECTION CriticalSection
-);
+ IN PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlpUnWaitCriticalSection(
+ IN PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpWaitForCriticalSection(
+ IN PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAcquireResourceExclusive(
+ IN PRTL_RESOURCE Resource,
+ IN BOOLEAN Wait
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAcquireResourceShared(
+ IN PRTL_RESOURCE Resource,
+ IN BOOLEAN Wait
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlConvertExclusiveToShared(
+ IN PRTL_RESOURCE Resource
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlConvertSharedToExclusive(
+ IN PRTL_RESOURCE Resource
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDeleteResource(
+ IN PRTL_RESOURCE Resource
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDumpResource(
+ IN PRTL_RESOURCE Resource
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeResource(
+ IN PRTL_RESOURCE Resource
+);
+
+NTSYSAPI
+VOID
+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,
OUT PULONG CompressFragmentWorkSpaceSize
);
+/*
+ * Debug Info Functions
+ */
+NTSYSAPI
+PDEBUG_BUFFER
+NTAPI
+RtlCreateQueryDebugBuffer(
+ IN ULONG Size,
+ IN BOOLEAN EventPair
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryProcessDebugInformation(
+ IN ULONG ProcessId,
+ IN ULONG DebugInfoClassMask,
+ IN OUT PDEBUG_BUFFER DebugBuffer
+);
+
/*
* 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(
- PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex
+ IN PRTL_BITMAP BitMapHeader,
+ IN ULONG NumberToFind,
+ IN ULONG HintIndex
);
+NTSYSAPI
ULONG
-STDCALL
+NTAPI
RtlFindClearBitsAndSet(
- PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex
+ 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 (
- PRTL_BITMAP BitMapHeader,
- ULONG StartingIndex,
- ULONG NumberToSet
+ IN PRTL_BITMAP BitMapHeader,
+ IN ULONG StartingIndex,
+ IN ULONG NumberToSet
+);
+
+/*
+ * Timer Functions
+ */
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateTimer(
+ HANDLE TimerQueue,
+ PHANDLE phNewTimer,
+ WAITORTIMERCALLBACKFUNC Callback,
+ PVOID Parameter,
+ ULONG DueTime,
+ ULONG Period,
+ ULONG Flags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateTimerQueue(PHANDLE TimerQueue);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteTimer(
+ HANDLE TimerQueue,
+ HANDLE Timer,
+ HANDLE CompletionEvent
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpdateTimer(
+ HANDLE TimerQueue,
+ HANDLE Timer,
+ ULONG DueTime,
+ ULONG Period
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteTimerQueueEx(
+ HANDLE TimerQueue,
+ HANDLE CompletionEvent
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteTimerQueue(HANDLE TimerQueue);
+
+/*
+ * Debug Functions
+ */
+ULONG
+__cdecl
+DbgPrint(
+ IN PCH Format,
+ IN ...
+);
+
+VOID
+NTAPI
+DbgBreakPoint(VOID);
+
+/*
+ * Handle Table Functions
+ */
+NTSYSAPI
+PRTL_HANDLE_TABLE_ENTRY
+NTAPI
+RtlAllocateHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN OUT PULONG Index
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlFreeHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE_TABLE_ENTRY Handle
+);
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeHandleTable(
+ IN ULONG TableSize,
+ IN ULONG HandleSize,
+ IN PRTL_HANDLE_TABLE HandleTable
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsValidHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE_TABLE_ENTRY Handle
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsValidIndexHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN ULONG Index,
+ OUT PRTL_HANDLE_TABLE_ENTRY *Handle
);
/*
* PE Functions
- */
+ */
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlFindMessage(
+ IN PVOID BaseAddress,
+ IN ULONG Type,
+ IN ULONG Language,
+ IN ULONG MessageId,
+ OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
+);
+
+NTSYSAPI
+ULONG
+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
*/
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCheckRegistryKey(
+ ULONG RelativeTo,
+ PWSTR Path
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath);
-
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtOpenKey(
+ OUT HANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ 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,
ULONG ValueLength
);
-NTSTATUS
-STDCALL
-RtlFindMessage (
- IN PVOID BaseAddress,
- IN ULONG Type,
- IN ULONG Language,
- IN ULONG MessageId,
- OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
- );
-
/*
* 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 String Functions
- */
-BOOLEAN
-STDCALL
-RtlDosPathNameToNtPathName_U(
- PWSTR DosName,
- PUNICODE_STRING NtName,
- PWSTR *ShortName,
- PCURDIR CurrentDirectory
-);
-
-BOOLEAN
-STDCALL
-RtlIsNameLegalDOS8Dot3(
- IN PUNICODE_STRING UnicodeName,
- IN PANSI_STRING AnsiName,
- PBOOLEAN Unknown
-);
+ * Misc conversion functions
+ */
+#if defined(NTOS_MODE_USER) && !defined(NO_RTL_INLINES)
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlConvertLongToLargeInteger(LONG SignedInteger)
+{
+ LARGE_INTEGER Result;
+
+ Result.QuadPart = SignedInteger;
+ return Result;
+}
+
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlEnlargedIntegerMultiply(
+ LONG Multiplicand,
+ LONG Multiplier)
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+static __inline
ULONG
-STDCALL
-RtlIsTextUnicode(
- PVOID Buffer,
- ULONG Length,
- ULONG *Flags
-);
+NTAPI_INLINE
+RtlEnlargedUnsignedDivide(
+ 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
+NTAPI_INLINE
+RtlEnlargedUnsignedMultiply(
+ ULONG Multiplicand,
+ ULONG Multiplier)
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+#endif
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlUniform(PULONG Seed);
/*
* Time Functions
*/
+NTSYSAPI
NTSTATUS
-STDCALL
+NTAPI
RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
-
+
+NTSYSAPI
VOID
-STDCALL
+NTAPI
RtlSecondsSince1970ToTime(
IN ULONG SecondsSince1970,
OUT PLARGE_INTEGER Time
);
-NTSTATUS
-STDCALL
+NTSYSAPI
+NTSTATUS
+NTAPI
RtlSetTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
-
-BOOLEAN
-STDCALL
+
+NTSYSAPI
+BOOLEAN
+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);
-/*
- * C Runtime Library Functions
- */
-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);
-char * _strlwr(char *x);
-int _strnicmp(const char *s1, const char *s2, size_t n);
-char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
-char * _strrev(char *s);
-char * _strset(char* szToFill, int szFill);
-char * _strupr(char *x);
-int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
-int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
-wchar_t * _wcslwr (wchar_t *x);
-int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
-wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
-wchar_t * _wcsrev(wchar_t *s);
-wchar_t *_wcsupr(wchar_t *x);
-int atoi(const char *str);
-long atol(const char *str);
-int isdigit(int c);
-int isalpha(int c);
-int islower(int c);
-int isprint(int c);
-int isspace(int c);
-int isupper(int c);
-int isxdigit(int c);
-size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
-int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
-void * memchr(const void *s, int c, size_t n);
-void * memcpy(void *to, const void *from, size_t count);
-void * memmove(void *dest,const void *src, size_t count);
-void * memset(void *src, int val, size_t count);
-int rand(void);
-int sprintf(char * buf, const char *fmt, ...);
-void srand(unsigned seed);
-char * strcat(char *s, const char *append);
-char * strchr(const char *s, int c);
-int strcmp(const char *s1, const char *s2);
-char * strcpy(char *to, const char *from);
-size_t strlen(const char *str);
-char * strncat(char *dst, const char *src, size_t n);
-int strncmp(const char *s1, const char *s2, size_t n);
-char *strncpy(char *dst, const char *src, size_t n);
-char *strrchr(const char *s, int c);
-size_t strspn(const char *s1, const char *s2);
-char *strstr(const char *s, const char *find);
-int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
-int tolower(int c);
-int toupper(int c);
-wchar_t towlower(wchar_t c);
-wchar_t towupper(wchar_t c);
-int vsprintf(char *buf, const char *fmt, va_list args);
-wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
-wchar_t * wcschr(const wchar_t *str, wchar_t ch);
-int wcscmp(const wchar_t *cs, const wchar_t *ct);
-wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
-size_t wcscspn(const wchar_t *str,const wchar_t *reject);
-size_t wcslen(const wchar_t *s);
-wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
-int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
-wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
-wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
-size_t wcsspn(const wchar_t *str,const wchar_t *accept);
-wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
-size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
-int wctomb (char *mbchar, wchar_t wchar);
-
#endif