X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Finclude%2Fndk%2Frtlfuncs.h;h=cd03f37cbcc66d56969c001899571dd7b4acf4bd;hp=98cf6ae2f683583f7d245c18a8262445088ae8d9;hb=8481c1fa105172e71517334bcfa085da87b85258;hpb=4adc41a90968c0f40bb4684a7affaf3d281c8a5c diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h index 98cf6ae2f68..cd03f37cbcc 100644 --- a/reactos/include/ndk/rtlfuncs.h +++ b/reactos/include/ndk/rtlfuncs.h @@ -1,4 +1,4 @@ -/*++ NDK Version: 0095 +/*++ NDK Version: 0098 Copyright (c) Alex Ionescu. All rights reserved. @@ -12,7 +12,7 @@ Abstract: Author: - Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004 + Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 --*/ @@ -24,8 +24,14 @@ Author: // #include #include -#include #include +#include +#include "in6addr.h" +#include "inaddr.h" + +#ifdef __cplusplus +extern "C" { +#endif #ifdef NTOS_MODE_USER @@ -109,7 +115,7 @@ PushEntryList( FORCEINLINE BOOLEAN RemoveEntryList( - IN PLIST_ENTRY Entry) + IN PLIST_ENTRY Entry) { PLIST_ENTRY OldFlink; PLIST_ENTRY OldBlink; @@ -124,7 +130,7 @@ RemoveEntryList( FORCEINLINE PLIST_ENTRY RemoveHeadList( - IN PLIST_ENTRY ListHead) + IN PLIST_ENTRY ListHead) { PLIST_ENTRY Flink; PLIST_ENTRY Entry; @@ -139,7 +145,7 @@ RemoveHeadList( FORCEINLINE PLIST_ENTRY RemoveTailList( - IN PLIST_ENTRY ListHead) + IN PLIST_ENTRY ListHead) { PLIST_ENTRY Blink; PLIST_ENTRY Entry; @@ -151,11 +157,60 @@ RemoveTailList( return Entry; } +// +// Unicode string macros +// +FORCEINLINE +VOID +RtlInitEmptyUnicodeString(OUT PUNICODE_STRING UnicodeString, + IN PWSTR Buffer, + IN USHORT BufferSize) +{ + UnicodeString->Length = 0; + UnicodeString->MaximumLength = BufferSize; + UnicodeString->Buffer = Buffer; +} + // // LUID Macros // #define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \ ((L1)->LowPart == (L2)->LowPart)) +FORCEINLINE +LUID +NTAPI_INLINE +RtlConvertUlongToLuid(ULONG Ulong) +{ + LUID TempLuid; + + TempLuid.LowPart = Ulong; + TempLuid.HighPart = 0; + return TempLuid; +} + +// +// ASSERT Macros +// +#ifndef ASSERT +#if DBG + +#define ASSERT( exp ) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, NULL ),FALSE) : \ + TRUE) + +#define ASSERTMSG( msg, exp ) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, msg ),FALSE) : \ + TRUE) + +#else + +#define ASSERT( exp ) ((void) 0) +#define ASSERTMSG( msg, exp ) ((void) 0) + +#endif +#endif // // RTL Splay Tree Functions @@ -268,17 +323,16 @@ RtlAssert( ); NTSYSAPI -VOID +PVOID NTAPI -RtlCaptureContext(OUT PCONTEXT ContextRecord); +RtlSetUnhandledExceptionFilter( + IN PVOID TopLevelExceptionFilter +); NTSYSAPI -ULONG +VOID NTAPI -RtlComputeCrc32( - IN ULONG Initial, - IN PUCHAR Data, - IN ULONG Length); +RtlCaptureContext(OUT PCONTEXT ContextRecord); NTSYSAPI PVOID @@ -290,6 +344,16 @@ PVOID NTAPI RtlDecodePointer(IN PVOID Pointer); +NTSYSAPI +PVOID +NTAPI +RtlEncodeSystemPointer(IN PVOID Pointer); + +NTSYSAPI +PVOID +NTAPI +RtlDecodeSystemPointer(IN PVOID Pointer); + NTSYSAPI BOOLEAN NTAPI @@ -328,6 +392,14 @@ RtlUnwind( IN PVOID ReturnValue ); +// +// Tracing Functions +// +NTSYSAPI +USHORT +NTAPI +RtlLogStackBackTrace(VOID); + // // Heap Functions // @@ -353,6 +425,15 @@ RtlCreateHeap( ); NTSYSAPI +ULONG +NTAPI +RtlCreateTagHeap( + IN HANDLE HeapHandle, + IN ULONG Flags, + IN PWSTR TagName, + IN PWSTR TagSubName +); + ULONG NTAPI RtlCompactHeap( @@ -525,6 +606,16 @@ RtlAddAuditAccessAce( BOOLEAN Failure ); +NTSYSAPI +NTSTATUS +NTAPI +RtlAcquirePrivilege( + IN PULONG Privilege, + IN ULONG NumPriv, + IN ULONG Flags, + OUT PVOID *ReturnedState +); + NTSYSAPI NTSTATUS NTAPI @@ -827,6 +918,13 @@ RtlQueryInformationAcl( ACL_INFORMATION_CLASS InformationClass ); +NTSYSAPI +VOID +NTAPI +RtlReleasePrivilege( + IN PVOID ReturnedState +); + NTSYSAPI NTSTATUS NTAPI @@ -1091,14 +1189,17 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64); #else +NTSYSAPI USHORT FASTCALL RtlUshortByteSwap(IN USHORT Source); +NTSYSAPI ULONG FASTCALL RtlUlongByteSwap(IN ULONG Source); +NTSYSAPI ULONGLONG FASTCALL RtlUlonglongByteSwap(IN ULONGLONG Source); @@ -1391,6 +1492,16 @@ RtlEqualUnicodeString( BOOLEAN CaseInsensitive ); +NTSYSAPI +NTSTATUS +NTAPI +RtlFindCharInUnicodeString( + IN ULONG Flags, + IN PUNICODE_STRING SearchString, + IN PCUNICODE_STRING MatchString, + OUT PUSHORT Position +); + NTSYSAPI VOID NTAPI @@ -1410,8 +1521,17 @@ NTSYSAPI VOID NTAPI RtlInitUnicodeString( - IN OUT PUNICODE_STRING DestinationString, - IN PCWSTR SourceString); + IN OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlInitUnicodeStringEx( + OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString OPTIONAL +); NTSYSAPI ULONG @@ -1458,6 +1578,14 @@ RtlUnicodeStringToInteger( PULONG Value ); +NTSYSAPI +NTSTATUS +NTAPI +RtlValidateUnicodeString( + IN ULONG Flags, + IN PCUNICODE_STRING String +); + // // Ansi String Functions // @@ -1693,31 +1821,61 @@ RtlCreateEnvironment( PWSTR *Environment ); +NTSYSAPI +NTSTATUS +NTAPI +RtlComputePrivatizedDllName_U( + IN PUNICODE_STRING DllName, + OUT PUNICODE_STRING RealName, + OUT PUNICODE_STRING LocalName +); + NTSYSAPI VOID NTAPI -RtlDestroyEnvironment(PWSTR Environment); +RtlDestroyEnvironment( + IN PWSTR Environment +); NTSYSAPI BOOLEAN NTAPI -RtlDoesFileExists_U(PWSTR FileName); +RtlDoesFileExists_U( + IN PCWSTR FileName +); + +NTSYSAPI +BOOLEAN +NTAPI +RtlDoesFileExists_UstrEx( + IN PCUNICODE_STRING FileName, + IN BOOLEAN SucceedIfBusy +); NTSYSAPI ULONG NTAPI -RtlDetermineDosPathNameType_U(PCWSTR Path); +RtlDetermineDosPathNameType_U( + IN PCWSTR Path +); + +NTSYSAPI +ULONG +NTAPI +RtlDetermineDosPathNameType_Ustr( + IN PCUNICODE_STRING Path +); NTSYSAPI ULONG NTAPI RtlDosSearchPath_U( - WCHAR *sp, - WCHAR *name, - WCHAR *ext, - ULONG buf_sz, - WCHAR *buffer, - WCHAR **shortname + IN PCWSTR Path, + IN PCWSTR FileName, + IN PCWSTR Extension, + IN ULONG BufferSize, + OUT PWSTR Buffer, + OUT PWSTR *PartName ); NTSYSAPI @@ -1752,12 +1910,39 @@ NTSYSAPI ULONG NTAPI RtlGetFullPathName_U( - const WCHAR *dosname, - ULONG size, - WCHAR *buf, - WCHAR **shortname + IN PCWSTR FileName, + IN ULONG Size, + IN PWSTR Buffer, + OUT PWSTR *ShortName +); + +NTSYSAPI +ULONG +NTAPI +RtlGetFullPathName_Ustr( + IN PUNICODE_STRING FileName, + IN ULONG Size, + IN PWSTR Buffer, + OUT PWSTR *ShortName, + OUT PBOOLEAN InvalidName, + OUT RTL_PATH_TYPE *PathType +); + +NTSYSAPI +ULONG +NTAPI +RtlIsDosDeviceName_U( + IN PWSTR Name ); +NTSYSAPI +ULONG +NTAPI +RtlIsDosDeviceName_Ustr( + IN PUNICODE_STRING Name +); + + NTSYSAPI BOOLEAN NTAPI @@ -1779,7 +1964,9 @@ RtlQueryEnvironmentVariable_U( NTSYSAPI NTSTATUS NTAPI -RtlSetCurrentDirectory_U(PUNICODE_STRING name); +RtlSetCurrentDirectory_U( + IN PUNICODE_STRING name +); NTSYSAPI NTSTATUS @@ -1829,6 +2016,13 @@ RtlLeaveCriticalSection( IN PRTL_CRITICAL_SECTION CriticalSection ); +NTSYSAPI +BOOLEAN +NTAPI +RtlTryEnterCriticalSection( + IN PRTL_CRITICAL_SECTION CriticalSection +); + NTSYSAPI VOID NTAPI @@ -1943,7 +2137,7 @@ RtlGetCompressionWorkSpaceSize( // Debug Info Functions // NTSYSAPI -PRTL_DEBUG_BUFFER +PRTL_DEBUG_INFORMATION NTAPI RtlCreateQueryDebugBuffer( IN ULONG Size, @@ -1953,7 +2147,7 @@ RtlCreateQueryDebugBuffer( NTSYSAPI NTSTATUS NTAPI -RtlDestroyQueryDebugBuffer(IN PRTL_DEBUG_BUFFER DebugBuffer); +RtlDestroyQueryDebugBuffer(IN PRTL_DEBUG_INFORMATION DebugBuffer); NTSYSAPI NTSTATUS @@ -1961,7 +2155,7 @@ NTAPI RtlQueryProcessDebugInformation( IN ULONG ProcessId, IN ULONG DebugInfoClassMask, - IN OUT PRTL_DEBUG_BUFFER DebugBuffer + IN OUT PRTL_DEBUG_INFORMATION DebugBuffer ); // @@ -2024,7 +2218,15 @@ RtlInitializeBitMap( NTSYSAPI VOID NTAPI -RtlSetBits ( +RtlSetBit( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber +); + +NTSYSAPI +VOID +NTAPI +RtlSetBits( IN PRTL_BITMAP BitMapHeader, IN ULONG StartingIndex, IN ULONG NumberToSet @@ -2083,6 +2285,26 @@ NTSTATUS NTAPI RtlDeleteTimerQueue(HANDLE TimerQueue); +// +// SList functions +// +PSLIST_ENTRY +FASTCALL +InterlockedPushListSList( + IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY List, + IN PSLIST_ENTRY ListEnd, + IN ULONG Count +); + +// +// Range List functions +// +NTSYSAPI +VOID +NTAPI +RtlFreeRangeList(IN PRTL_RANGE_LIST RangeList); + // // Debug Functions // @@ -2093,6 +2315,24 @@ DbgPrint( IN ... ); +NTSYSAPI +ULONG +__cdecl +DbgPrintEx( + IN ULONG ComponentId, + IN ULONG Level, + IN PCH Format, + IN ... +); + +ULONG +NTAPI +DbgPrompt( + IN PCH PromptString, + OUT PCH OutputString, + IN ULONG OutputSize +); + VOID NTAPI DbgBreakPoint(VOID); @@ -2170,9 +2410,9 @@ NTSYSAPI PVOID NTAPI RtlImageDirectoryEntryToData( - PVOID BaseAddress, - BOOLEAN bFlag, - ULONG Directory, + PVOID BaseAddress, + BOOLEAN MappedAsImage, + USHORT Directory, PULONG Size ); @@ -2191,6 +2431,16 @@ PIMAGE_NT_HEADERS NTAPI RtlImageNtHeader(IN PVOID BaseAddress); +NTSYSAPI +NTSTATUS +NTAPI +RtlImageNtHeaderEx( + IN ULONG Flags, + IN PVOID BaseAddress, + IN ULONGLONG Size, + IN PIMAGE_NT_HEADERS *NtHeader +); + NTSYSAPI PIMAGE_SECTION_HEADER NTAPI @@ -2200,6 +2450,73 @@ RtlImageRvaToSection( ULONG Rva ); +// +// Activation Context Functions +// +#ifdef NTOS_MODE_USER +NTSYSAPI +NTSTATUS +NTAPI +RtlActivateActivationContextUnsafeFast( + IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame, + IN PVOID Context +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlAllocateActivationContextStack( + IN PVOID *Context +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlGetActiveActivationContext( + IN PVOID *Context +); + +NTSYSAPI +VOID +NTAPI +RtlReleaseActivationContext( + IN PVOID *Context +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDeactivateActivationContextUnsafeFast( + IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDosApplyFileIsolationRedirection_Ustr( + IN BOOLEAN Unknown, + IN PUNICODE_STRING OriginalName, + IN PUNICODE_STRING Extension, + IN OUT PUNICODE_STRING RedirectedName, + IN OUT PUNICODE_STRING RedirectedName2, + IN OUT PUNICODE_STRING *OriginalName2, + IN PVOID Unknown1, + IN PVOID Unknown2, + IN PVOID Unknown3 +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlFindActivationContextSectionString( + IN PVOID Unknown0, + IN PVOID Unknown1, + IN ULONG SectionType, + IN PUNICODE_STRING SectionName, + IN PVOID Unknown2 +); +#endif + // // Registry Functions // @@ -2352,7 +2669,18 @@ RtlEnlargedUnsignedMultiply( NTSYSAPI ULONG NTAPI -RtlUniform(PULONG Seed); +RtlUniform( + IN PULONG Seed +); + +NTSYSAPI +ULONG +NTAPI +RtlComputeCrc32( + IN UINT PartialCrc, + IN PUCHAR Buffer, + IN ULONG Length +); // // Network Functions @@ -2361,36 +2689,36 @@ NTSYSAPI NTSTATUS NTAPI RtlIpv4StringToAddressW( - IN LPWSTR IpString, - IN ULONG Base, - OUT PULONG PtrToIpAddr, - OUT PULONG IpAddr + IN PWCHAR String, + IN UCHAR Strict, + OUT PWCHAR Terminator, + OUT struct in_addr *Addr ); NTSYSAPI NTSTATUS NTAPI RtlIpv6StringToAddressA( - IN LPSTR Name, - OUT PULONG Unknown, - OUT PVOID IpAddr + IN PCHAR Name, + OUT PCHAR *Terminator, + OUT struct in6_addr *Addr ); NTSYSAPI NTSTATUS NTAPI RtlIpv6StringToAddressW( - IN LPWSTR Name, - OUT PULONG Unknown, - OUT PVOID IpAddr + IN PWCHAR Name, + OUT PCHAR *Terminator, + OUT struct in6_addr *Addr ); NTSYSAPI NTSTATUS NTAPI RtlIpv6StringToAddressExA( - IN LPSTR AddressName, - IN PVOID Address, + IN PCHAR AddressString, + IN struct in6_addr *Address, IN PULONG ScopeId, IN PUSHORT Port ); @@ -2399,8 +2727,8 @@ NTSYSAPI NTSTATUS NTAPI RtlIpv6StringToAddressExW( - IN LPWSTR AddressName, - IN PVOID Address, + IN PWCHAR AddressName, + IN struct in6_addr *Address, IN PULONG ScopeId, IN PUSHORT Port ); @@ -2409,6 +2737,7 @@ RtlIpv6StringToAddressExW( // // Time Functions // +struct _RTL_TIME_ZONE_INFORMATION; NTSYSAPI NTSTATUS NTAPI @@ -2443,6 +2772,14 @@ RtlTimeToTimeFields( PTIME_FIELDS TimeFields ); +NTSYSAPI +NTSTATUS +NTAPI +RtlSystemTimeToLocalTime( + IN PLARGE_INTEGER SystemTime, + OUT PLARGE_INTEGER LocalTime +); + // // Version Functions // @@ -2465,4 +2802,8 @@ BOOLEAN NTAPI RtlGetNtProductType(OUT PNT_PRODUCT_TYPE ProductType); +#ifdef __cplusplus +} +#endif + #endif