From 420195308d041338d0e33ae6d80bf169a5db4c64 Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Fri, 12 Sep 2008 15:09:17 +0000 Subject: [PATCH] - Uncomment NTDLL exports which we implement, and add stubs for numerous routines - Add missing prototypes to NDK - Implement RtlInterlockedCompareExchange64 and RtlGetCurrentProcessorNumber - Rename RtlpCurrentPeb to RtlGetCurrentPeb and export it from NTDLL svn path=/trunk/; revision=36166 --- reactos/dll/ntdll/def/ntdll_i386.def | 99 ++++++++++++------------- reactos/dll/ntdll/ldr/utils.c | 27 ++++++- reactos/dll/ntdll/rtl/libsupp.c | 5 +- reactos/include/ndk/ldrfuncs.h | 2 + reactos/include/ndk/rtlfuncs.h | 89 ++++++++++++++++++++++ reactos/lib/rtl/actctx.c | 106 +++++++++++++++++++++++++++ reactos/lib/rtl/env.c | 3 +- reactos/lib/rtl/error.c | 2 +- reactos/lib/rtl/exception.c | 11 ++- reactos/lib/rtl/heap.c | 64 +++++++++++++++- reactos/lib/rtl/interlck.c | 62 ++++++++++++++++ reactos/lib/rtl/process.c | 19 ++++- reactos/lib/rtl/rtl.rbuild | 3 + reactos/lib/rtl/security.c | 47 +++++++++++- reactos/lib/rtl/slist.c | 39 ++++++++++ reactos/lib/rtl/thread.c | 15 +++- reactos/lib/rtl/unicode.c | 11 ++- reactos/ntoskrnl/rtl/libsupp.c | 2 +- 18 files changed, 544 insertions(+), 62 deletions(-) create mode 100644 reactos/lib/rtl/actctx.c create mode 100644 reactos/lib/rtl/interlck.c create mode 100644 reactos/lib/rtl/slist.c diff --git a/reactos/dll/ntdll/def/ntdll_i386.def b/reactos/dll/ntdll/def/ntdll_i386.def index 2e05d98f16b..8ce9a39b45e 100644 --- a/reactos/dll/ntdll/def/ntdll_i386.def +++ b/reactos/dll/ntdll/def/ntdll_i386.def @@ -92,13 +92,13 @@ LdrEnumResources@20 LdrFindEntryForAddress@8 ;LdrEnumerateLoadedModules ;LdrFindCreateProcessManifest -;LdrFindEntryForAddress +LdrFindEntryForAddress@8 LdrFindResourceDirectory_U@16 ;LdrFindResourceEx_U LdrFindResource_U@16 LdrGetDllHandle@16 ;LdrFlushAlternateResourceModules -;LdrGetDllHandle +LdrGetDllHandle@16 ;LdrGetDllHandleEx LdrGetProcedureAddress@16 ;LdrHotPatchRoutine @@ -106,7 +106,7 @@ LdrGetProcedureAddress@16 LdrInitializeThunk@16 ;LdrLoadAlternateResourceModule LdrLoadDll@16 -;LdrLockLoaderLock +LdrLockLoaderLock@12 ;LdrOpenImageFileOptionsKey LdrProcessRelocationBlock@16 LdrQueryImageFileExecutionOptions@24 @@ -117,9 +117,9 @@ LdrQueryProcessModuleInformation@12 ;LdrSetDllManifestProber LdrShutdownProcess@0 LdrShutdownThread@0 -;LdrUnloadAlternateResourceModule +LdrUnloadAlternateResourceModule@4 LdrUnloadDll@4 -;LdrUnlockLoaderLock +LdrUnlockLoaderLock@8 LdrVerifyImageMatchesChecksum@16 NlsAnsiCodePage DATA NlsMbCodePageTag DATA @@ -430,14 +430,14 @@ NtYieldExecution@0 ;RtlAbortRXact RtlAbsoluteToSelfRelativeSD@12 RtlAcquirePebLock@0 -;RtlAcquirePrivilege +RtlAcquirePrivilege@16 RtlAcquireResourceExclusive@8 RtlAcquireResourceShared@8 RtlAcquireSRWLockExclusive@4 RtlAcquireSRWLockShared@4 ;RtlActivateActivationContext ;RtlActivateActivationContextEx -;RtlActivateActivationContextUnsafeFast +RtlActivateActivationContextUnsafeFast@8 RtlAddAccessAllowedAce@16 RtlAddAccessAllowedAceEx@20 RtlAddAccessAllowedObjectAce@28 @@ -453,13 +453,13 @@ RtlAddAuditAccessAceEx@28 RtlAddAuditAccessObjectAce@36 ;RtlAddCompoundAce RtlAddMandatoryAce@24 -;RtlAddRefActivationContext +RtlAddRefActivationContext@4 ;RtlAddRefMemoryStream ;RtlAddVectoredContinueHandler RtlAddVectoredExceptionHandler@8 ;RtlAddressInSectionTable RtlAdjustPrivilege@16 -;RtlAllocateActivationContextStack +RtlAllocateActivationContextStack@4 RtlAllocateAndInitializeSid@44 RtlAllocateHandle@8 RtlAllocateHeap@12 @@ -479,7 +479,7 @@ RtlAreBitsClear@12 RtlAreBitsSet@12 RtlAssert@16 ;RtlCancelTimer -;RtlCaptureContext +RtlCaptureContext@4 RtlCaptureStackBackTrace@16 ;RtlCaptureStackContext RtlCharToInteger@12 @@ -530,7 +530,7 @@ RtlCreateProcessParameters@40 RtlCreateQueryDebugBuffer@8 RtlCreateRegistryKey@8 RtlCreateSecurityDescriptor@8 -;RtlCreateSystemVolumeInformationFolder +RtlCreateSystemVolumeInformationFolder@4 RtlCreateTagHeap@16 RtlCreateTimer@28 RtlCreateTimerQueue@4 @@ -542,9 +542,10 @@ RtlCreateUserThread@40 RtlCustomCPToUnicodeN@24 RtlCutoverTimeToSystemTime@16 RtlDeNormalizeProcessParams@4 -;RtlDeactivateActivationContext +RtlDeactivateActivationContext@8 +RtlDeactivateActivationContextUnsafeFast@4 RtlDecodePointer=RtlEncodePointer@4 -;RtlDecodeSystemPointer +RtlDecodeSystemPointer@4=RtlEncodeSystemPointer@4 RtlDecompressBuffer@24 RtlDecompressFragment@32 ;RtlDefaultNpAcl @@ -587,7 +588,7 @@ RtlDuplicateUnicodeString@12 RtlEmptyAtomTable@8 ;RtlEnableEarlyCriticalSectionEventCreation RtlEncodePointer@4 -;RtlEncodeSystemPointer +RtlEncodeSystemPointer@4 RtlEnlargedIntegerMultiply@8 RtlEnlargedUnsignedDivide@16 RtlEnlargedUnsignedMultiply@8 @@ -616,8 +617,8 @@ RtlFillMemory@12 RtlFillMemoryUlong@12 ;RtlFinalReleaseOutOfProcessMemoryStream ;RtlFindActivationContextSectionGuid -;RtlFindActivationContextSectionString -;RtlFindCharInUnicodeString +RtlFindActivationContextSectionString@20 +RtlFindCharInUnicodeString@16 RtlFindClearBits@12 RtlFindClearBitsAndSet@12 RtlFindClearRuns@16 @@ -629,9 +630,9 @@ RtlFindMostSignificantBit@8 RtlFindNextForwardRunClear@12 RtlFindSetBits@12 RtlFindSetBitsAndClear@12 -;RtlFirstEntrySList +RtlFirstEntrySList@4 RtlFirstFreeAce@8 -;RtlFlushSecureMemoryCache +RtlFlushSecureMemoryCache@8 RtlFormatCurrentUserKeyPath@4 RtlFormatMessage@32 ;RtlFormatMessageEx @@ -647,14 +648,14 @@ RtlFreeUserThreadStack@8 RtlGUIDFromString@8 RtlGenerate8dot3Name@16 RtlGetAce@12 -;RtlGetActiveActivationContext -;RtlGetCallersAddress +RtlGetActiveActivationContext@4 +RtlGetCallersAddress@8 RtlGetCompressionWorkSpaceSize@12 RtlGetControlSecurityDescriptor@12 ;RtlGetCriticalSectionRecursionCount RtlGetCurrentDirectory_U@8 -;RtlGetCurrentPeb -;RtlGetCurrentProcessorNumber +RtlGetCurrentPeb@0 +RtlGetCurrentProcessorNumber@0 RtlGetDaclSecurityDescriptor@16 RtlGetElementGenericTable@8 RtlGetElementGenericTableAvl@8 @@ -689,7 +690,7 @@ RtlImageRvaToSection@12 RtlImageRvaToVa@16 RtlImpersonateSelf@4 RtlInitAnsiString@8 -;RtlInitAnsiStringEx +RtlInitAnsiStringEx@8 RtlInitCodePageTable@8 ;RtlInitMemoryStream RtlInitNlsTables@16 @@ -708,7 +709,7 @@ RtlInitializeGenericTableAvl@20 RtlInitializeHandleTable@12 ;RtlInitializeRXact RtlInitializeResource@4 -;RtlInitializeSListHead +RtlInitializeSListHead@4 RtlInitializeSid@12 RtlInitializeSRWLock@4 RtlInsertElementGenericTable@16 @@ -718,11 +719,11 @@ RtlInsertElementGenericTableFullAvl@24 RtlInt64ToUnicodeString@16 RtlIntegerToChar@16 RtlIntegerToUnicodeString@12 -;RtlInterlockedCompareExchange64 -;RtlInterlockedFlushSList -;RtlInterlockedPopEntrySList -;RtlInterlockedPushEntrySList -;RtlInterlockedPushListSList +RtlInterlockedCompareExchange64@20 +RtlInterlockedFlushSList@4 +RtlInterlockedPopEntrySList@4 +RtlInterlockedPushEntrySList@8 +RtlInterlockedPushListSList@16 RtlIpv4AddressToStringA@8 RtlIpv4AddressToStringExA@16 RtlIpv4AddressToStringExW@16 @@ -779,8 +780,8 @@ RtlMoveMemory@12 ;RtlMultiAppendUnicodeStringBuffer RtlMultiByteToUnicodeN@20 RtlMultiByteToUnicodeSize@12 -;RtlMultipleAllocateHeap -;RtlMultipleFreeHeap +RtlMultipleAllocateHeap@20 +RtlMultipleFreeHeap@16 ;RtlNewInstanceSecurityObject ;RtlNewSecurityGrantedAccess RtlNewSecurityObject@24 @@ -789,7 +790,7 @@ RtlNewSecurityObject@24 RtlNormalizeProcessParams@4 RtlNtPathNameToDosPathName@16 RtlNtStatusToDosError@4 -;RtlNtStatusToDosErrorNoTeb +RtlNtStatusToDosErrorNoTeb@4 RtlNumberGenericTableElements@4 RtlNumberGenericTableElementsAvl@4 RtlNumberOfClearBits@4 @@ -803,14 +804,14 @@ RtlPinAtomInAtomTable@8 ;RtlPopFrame RtlPrefixString@12 RtlPrefixUnicodeString@12 -;RtlProtectHeap +RtlProtectHeap@8 ;RtlPushFrame RtlQueryAtomInAtomTable@24 -;RtlQueryDepthSList +RtlQueryDepthSList@4 RtlQueryEnvironmentVariable_U@12 -;RtlQueryHeapInformation +RtlQueryHeapInformation@20 RtlQueryInformationAcl@16 -;RtlQueryInformationActivationContext +RtlQueryInformationActivationContext@28 ;RtlQueryInformationActiveActivationContext ;RtlQueryInterfaceMemoryStream ;RtlQueryProcessBackTraceInformation @@ -832,17 +833,17 @@ RtlReAllocateHeap@16 ;RtlReadOutOfProcessMemoryStream RtlRealPredecessor@4 RtlRealSuccessor@4 -;RtlRegisterSecureMemoryCacheCallback +RtlRegisterSecureMemoryCacheCallback@4 RtlRegisterWait@24 -;RtlReleaseActivationContext +RtlReleaseActivationContext@4 ;RtlReleaseMemoryStream RtlReleasePebLock@0 -;RtlReleasePrivilege +RtlReleasePrivilege@4 RtlReleaseRelativeName@4 RtlReleaseResource@4 RtlReleaseSRWLockExclusive@4 RtlReleaseSRWLockShared@4 -;RtlRemoteCall +RtlRemoteCall@28 ;RtlRemoveVectoredContinueHandler RtlRemoveVectoredExceptionHandler@4 RtlResetRtlTranslations@4 @@ -866,7 +867,7 @@ RtlSetDaclSecurityDescriptor@16 ;RtlSetEnvironmentStrings RtlSetEnvironmentVariable@12 RtlSetGroupSecurityDescriptor@12 -;RtlSetHeapInformation +RtlSetHeapInformation@16 RtlSetInformationAcl@16 ;RtlSetIoCompletionCallback RtlSetLastWin32Error@4 @@ -883,7 +884,7 @@ RtlSetSecurityObject@20 ;RtlSetThreadPoolStartFunc RtlSetTimeZoneInformation@4 ;RtlSetTimer -;RtlSetUnhandledExceptionFilter +RtlSetUnhandledExceptionFilter@4 ;RtlSetUnicodeCallouts RtlSetUserFlagsHeap@16 RtlSetUserValueHeap@16 @@ -953,18 +954,18 @@ RtlValidateHeap@12 RtlValidateProcessHeaps@0 RtlValidateUnicodeString@8 RtlVerifyVersionInfo@16 -;RtlWalkFrameChain -;RtlWalkHeap +RtlWalkFrameChain@12 +RtlWalkHeap@8 ;RtlWow64EnableFsRedirection ;RtlWow64EnableFsRedirectionEx RtlWakeAllConditionVariable@4 RtlWakeConditionVariable@4 RtlWriteRegistryValue@24 ;RtlWriteMemoryStream -;RtlWriteRegistryValue -;RtlZeroHeap +RtlWriteRegistryValue@24 +RtlZeroHeap@8 RtlZeroMemory@8 -;RtlZombifyActivationContext +RtlZombifyActivationContext@4 ;RtlpApplyLengthFunction RtlpEnsureBufferSize@12 ;RtlpNotOwnerCriticalSection @@ -1285,7 +1286,7 @@ __iscsym __iscsymf __toascii _alldiv -;_alldvrm +_alldvrm _allmul _alloca_probe _allrem @@ -1293,7 +1294,7 @@ _allshl _allshr _atoi64 _aulldiv -;_aulldvrm +_aulldvrm _aullrem _aullshr _chkstk diff --git a/reactos/dll/ntdll/ldr/utils.c b/reactos/dll/ntdll/ldr/utils.c index 23ef953617f..2908fc47493 100644 --- a/reactos/dll/ntdll/ldr/utils.c +++ b/reactos/dll/ntdll/ldr/utils.c @@ -3239,4 +3239,29 @@ LdrProcessRelocationBlock(IN ULONG_PTR Address, return (PIMAGE_BASE_RELOCATION)TypeOffset; } -/* EOF */ +NTSTATUS +NTAPI +LdrLockLoaderLock(IN ULONG Flags, + OUT PULONG Disposition OPTIONAL, + OUT PULONG Cookie OPTIONAL) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +LdrUnlockLoaderLock(IN ULONG Flags, + IN ULONG Cookie OPTIONAL) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +BOOLEAN +NTAPI +LdrUnloadAlternateResourceModule(IN PVOID BaseAddress) +{ + UNIMPLEMENTED; + return FALSE; +} diff --git a/reactos/dll/ntdll/rtl/libsupp.c b/reactos/dll/ntdll/rtl/libsupp.c index ae0b29ccea0..8bae8c6da84 100644 --- a/reactos/dll/ntdll/rtl/libsupp.c +++ b/reactos/dll/ntdll/rtl/libsupp.c @@ -63,9 +63,12 @@ RtlpGetMode() return UserMode; } +/* + * @implemented + */ PPEB NTAPI -RtlpCurrentPeb(VOID) +RtlGetCurrentPeb(VOID) { return NtCurrentPeb(); } diff --git a/reactos/include/ndk/ldrfuncs.h b/reactos/include/ndk/ldrfuncs.h index 1d029c081a3..8943a099ad2 100644 --- a/reactos/include/ndk/ldrfuncs.h +++ b/reactos/include/ndk/ldrfuncs.h @@ -59,6 +59,7 @@ LdrFindResourceDirectory_U( ); BOOLEAN +NTAPI LdrUnloadAlternateResourceModule( IN PVOID BaseAddress ); @@ -86,6 +87,7 @@ LdrRelocateImage( ); NTSTATUS +NTAPI LdrLockLoaderLock( IN ULONG Flags, OUT PULONG Disposition OPTIONAL, diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h index 8a1552d26c5..538be4aeb38 100644 --- a/reactos/include/ndk/rtlfuncs.h +++ b/reactos/include/ndk/rtlfuncs.h @@ -407,6 +407,13 @@ RtlNtStatusToDosError( IN NTSTATUS Status ); +NTSYSAPI +ULONG +NTAPI +RtlNtStatusToDosErrorNoTeb( + IN NTSTATUS Status +); + NTSYSAPI VOID NTAPI @@ -567,6 +574,14 @@ RtlGetUserInfoHeap( OUT PULONG UserFlags ); +NTSYSAPI +PVOID +NTAPI +RtlProtectHeap( + IN PVOID HeapHandle, + IN BOOLEAN Protect +); + NTSYSAPI PWSTR NTAPI @@ -647,6 +662,14 @@ RtlValidateHeap( PVOID P ); +NTSYSAPI +NTSTATUS +NTAPI +RtlWalkHeap( + IN HANDLE HeapHandle, + IN PVOID HeapEntry +); + #define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap) // @@ -1883,6 +1906,13 @@ RtlFillMemoryUlong( // // Process Management Functions // +NTSYSAPI +PPEB +NTAPI +RtlGetCurrentPeb( + VOID +); + NTSYSAPI VOID NTAPI @@ -1972,6 +2002,19 @@ VOID NTAPI RtlReleasePebLock(VOID); +NTSYSAPI +NTSTATUS +NTAPI +RtlRemoteCall( + IN HANDLE Process, + IN HANDLE Thread, + IN PVOID CallSite, + IN ULONG ArgumentCount, + IN PULONG Arguments, + IN BOOLEAN PassContext, + IN BOOLEAN AlreadySuspended +); + NTSYSAPI VOID NTAPI @@ -1981,6 +2024,13 @@ RtlSetProcessIsCritical( IN BOOLEAN IsWinlogon ); +NTSYSAPI +ULONG +NTAPI +RtlGetCurrentProcessorNumber( + VOID +); + #define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock) // @@ -2771,6 +2821,15 @@ LdrRelocateImageWithBias( // Activation Context Functions // #ifdef NTOS_MODE_USER + +NTSYSAPI +VOID +NTAPI +RtlAddRefActivationContext( + PVOID Context +); + + NTSYSAPI NTSTATUS NTAPI @@ -2800,6 +2859,14 @@ RtlReleaseActivationContext( IN PVOID *Context ); +NTSYSAPI +NTSTATUS +NTAPI +RtlDeactivateActivationContext( + DWORD dwFlags, + ULONG_PTR ulCookie +); + NTSYSAPI NTSTATUS NTAPI @@ -2832,6 +2899,28 @@ RtlFindActivationContextSectionString( IN PUNICODE_STRING SectionName, IN PVOID Unknown2 ); + +NTSYSAPI +NTSTATUS +NTAPI +RtlQueryInformationActivationContext( + DWORD dwFlags, + PVOID Context, + PVOID pvSubInstance, + ULONG ulInfoClass, + PVOID pvBuffer, + SIZE_T cbBuffer OPTIONAL, + SIZE_T *pcbWrittenOrRequired OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlZombifyActivationContext( + PVOID Context +); + + #endif // diff --git a/reactos/lib/rtl/actctx.c b/reactos/lib/rtl/actctx.c new file mode 100644 index 00000000000..21b6753b299 --- /dev/null +++ b/reactos/lib/rtl/actctx.c @@ -0,0 +1,106 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Runtime Library + * PURPOSE: Activation Context Support + * FILE: lib/rtl/actctx.c + * PROGRAMERS: Stefan Ginsberg (stefan__100__@hotmail.com) + */ + +/* INCLUDES *****************************************************************/ + +#include + +#define NDEBUG +#include + +/* FUNCTIONS ***************************************************************/ + +VOID +NTAPI +RtlAddRefActivationContext(PVOID Context) +{ + UNIMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlActivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame, + IN PVOID Context) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlAllocateActivationContextStack(IN PVOID *Context) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlGetActiveActivationContext(IN PVOID *Context) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +VOID +NTAPI +RtlReleaseActivationContext(IN PVOID *Context) +{ + UNIMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlFindActivationContextSectionString(IN PVOID Unknown0, + IN PVOID Unknown1, + IN ULONG SectionType, + IN PUNICODE_STRING SectionName, + IN PVOID Unknown2) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlQueryInformationActivationContext(DWORD dwFlags, + PVOID Context, + PVOID pvSubInstance, + ULONG ulInfoClass, + PVOID pvBuffer, + SIZE_T cbBuffer OPTIONAL, + SIZE_T *pcbWrittenOrRequired OPTIONAL) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlZombifyActivationContext(PVOID Context) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlDeactivateActivationContext(DWORD dwFlags, + ULONG_PTR ulCookie) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +RtlDeactivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} diff --git a/reactos/lib/rtl/env.c b/reactos/lib/rtl/env.c index 86a418ed6c7..6a719abefbd 100644 --- a/reactos/lib/rtl/env.c +++ b/reactos/lib/rtl/env.c @@ -12,7 +12,6 @@ #define NDEBUG #include -PPEB NTAPI RtlpCurrentPeb(VOID); /* FUNCTIONS *****************************************************************/ /* @@ -508,7 +507,7 @@ RtlQueryEnvironmentVariable_U(PWSTR Environment, if (Environment == NULL) { - PPEB Peb = RtlpCurrentPeb(); + PPEB Peb = RtlGetCurrentPeb(); if (Peb) { Environment = Peb->ProcessParameters->Environment; SysEnvUsed = TRUE; diff --git a/reactos/lib/rtl/error.c b/reactos/lib/rtl/error.c index ad73e45f225..3276239f608 100644 --- a/reactos/lib/rtl/error.c +++ b/reactos/lib/rtl/error.c @@ -870,7 +870,7 @@ RtlMapSecurityErrorToNtStatus( * * @implemented */ -DWORD NTAPI +ULONG NTAPI RtlNtStatusToDosErrorNoTeb(IN NTSTATUS Status) { PERROR_TABLE Table = (PERROR_TABLE)ErrorTable; diff --git a/reactos/lib/rtl/exception.c b/reactos/lib/rtl/exception.c index 87dde5761dc..b0581ae3ed6 100644 --- a/reactos/lib/rtl/exception.c +++ b/reactos/lib/rtl/exception.c @@ -169,4 +169,13 @@ RtlUnhandledExceptionFilter(IN struct _EXCEPTION_POINTERS* ExceptionInfo) return ERROR_CALL_NOT_IMPLEMENTED; } -/* EOF */ +/* + * @unimplemented + */ +PVOID +NTAPI +RtlSetUnhandledExceptionFilter(IN PVOID TopLevelExceptionFilter) +{ + UNIMPLEMENTED; + return NULL; +} diff --git a/reactos/lib/rtl/heap.c b/reactos/lib/rtl/heap.c index 4ee69856431..14995d95a54 100644 --- a/reactos/lib/rtl/heap.c +++ b/reactos/lib/rtl/heap.c @@ -1869,4 +1869,66 @@ RtlCreateTagHeap(IN HANDLE HeapHandle, return 0; } -/* EOF */ +NTSTATUS +NTAPI +RtlWalkHeap(IN HANDLE HeapHandle, + IN PVOID HeapEntry) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +PVOID +NTAPI +RtlProtectHeap(IN PVOID HeapHandle, + IN BOOLEAN ReadOnly) +{ + UNIMPLEMENTED; + return NULL; +} + +DWORD +NTAPI +RtlSetHeapInformation(IN HANDLE HeapHandle OPTIONAL, + IN HEAP_INFORMATION_CLASS HeapInformationClass, + IN PVOID HeapInformation, + IN SIZE_T HeapInformationLength) +{ + UNIMPLEMENTED; + return 0; +} + +DWORD +NTAPI +RtlQueryHeapInformation(HANDLE HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation OPTIONAL, + SIZE_T HeapInformationLength OPTIONAL, + PSIZE_T ReturnLength OPTIONAL) +{ + UNIMPLEMENTED; + return 0; +} + +DWORD +NTAPI +RtlMultipleAllocateHeap(IN PVOID HeapHandle, + IN DWORD Flags, + IN SIZE_T Size, + IN DWORD Count, + OUT PVOID *Array) +{ + UNIMPLEMENTED; + return 0; +} + +DWORD +NTAPI +RtlMultipleFreeHeap(IN PVOID HeapHandle, + IN DWORD Flags, + IN DWORD Count, + OUT PVOID *Array) +{ + UNIMPLEMENTED; + return 0; +} diff --git a/reactos/lib/rtl/interlck.c b/reactos/lib/rtl/interlck.c new file mode 100644 index 00000000000..81479b4738d --- /dev/null +++ b/reactos/lib/rtl/interlck.c @@ -0,0 +1,62 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Runtime Library + * PURPOSE: RTL Interlocked Routines + * FILE: lib/rtl/interlck.c + * PROGRAMERS: Stefan Ginsberg (stefan__100__@hotmail.com) + */ + +/* INCLUDES *****************************************************************/ + +#include + +#define NDEBUG +#include + +/* FUNCTIONS ***************************************************************/ + +PSLIST_ENTRY +NTAPI +RtlInterlockedPopEntrySList(IN PSLIST_HEADER ListHead) +{ + UNIMPLEMENTED; + return NULL; +} + +PSLIST_ENTRY +NTAPI +RtlInterlockedPushEntrySList(IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY ListEntry) +{ + UNIMPLEMENTED; + return NULL; +} + +PSLIST_ENTRY +NTAPI +RtlInterlockedFlushSList(IN PSLIST_HEADER ListHead) +{ + UNIMPLEMENTED; + return NULL; +} + +PSLIST_ENTRY +NTAPI +RtlInterlockedPushListSList(IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY List, + IN PSLIST_ENTRY ListEnd, + IN ULONG Count) +{ + UNIMPLEMENTED; + return NULL; +} + +LONGLONG +NTAPI +RtlInterlockedCompareExchange64(LONGLONG volatile *Destination, + LONGLONG Exchange, + LONGLONG Comparand) +{ + /* Just call the intrinsic */ + return _InterlockedCompareExchange64(Destination, Exchange, Comparand); +} diff --git a/reactos/lib/rtl/process.c b/reactos/lib/rtl/process.c index 07f8ff54723..7c73afec9ad 100644 --- a/reactos/lib/rtl/process.c +++ b/reactos/lib/rtl/process.c @@ -329,6 +329,17 @@ RtlEncodePointer(IN PVOID Pointer) return (PVOID)((ULONG_PTR)Pointer ^ Cookie); } +/* + * @unimplemented + */ +PVOID +NTAPI +RtlEncodeSystemPointer(IN PVOID Pointer) +{ + UNIMPLEMENTED; + return NULL; +} + /* * @unimplemented */ @@ -343,4 +354,10 @@ RtlSetProcessIsCritical( //TODO } -/* EOF */ +ULONG +NTAPI +RtlGetCurrentProcessorNumber(VOID) +{ + /* Forward to kernel */ + return NtGetCurrentProcessorNumber(); +} diff --git a/reactos/lib/rtl/rtl.rbuild b/reactos/lib/rtl/rtl.rbuild index fdd2ddbebec..10edd510749 100644 --- a/reactos/lib/rtl/rtl.rbuild +++ b/reactos/lib/rtl/rtl.rbuild @@ -43,6 +43,7 @@ access.c acl.c + actctx.c atom.c bitmap.c bootdata.c @@ -61,6 +62,7 @@ handle.c heap.c image.c + interlck.c message.c largeint.c luid.c @@ -78,6 +80,7 @@ resource.c sd.c security.c + slist.c sid.c sprintf.c srw.c diff --git a/reactos/lib/rtl/security.c b/reactos/lib/rtl/security.c index 6c6857165bc..e9ef786edf5 100644 --- a/reactos/lib/rtl/security.c +++ b/reactos/lib/rtl/security.c @@ -81,6 +81,29 @@ RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel) return(Status); } +/* + * @unimplemented + */ +NTSTATUS +NTAPI +RtlAcquirePrivilege(IN PULONG Privilege, + IN ULONG NumPriv, + IN ULONG Flags, + OUT PVOID *ReturnedState) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +VOID +NTAPI +RtlReleasePrivilege(IN PVOID ReturnedState) +{ + UNIMPLEMENTED; +} /* * @implemented @@ -224,4 +247,26 @@ RtlSetSecurityObject(IN SECURITY_INFORMATION SecurityInformation, UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; } -/* EOF */ + +/* + * @unimplemented + */ +NTSTATUS +NTAPI +RtlRegisterSecureMemoryCacheCallback(IN PRTL_SECURE_MEMORY_CACHE_CALLBACK Callback) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +BOOLEAN +NTAPI +RtlFlushSecureMemoryCache(IN PVOID MemoryCache, + IN OPTIONAL SIZE_T MemoryLength) +{ + UNIMPLEMENTED; + return FALSE; +} diff --git a/reactos/lib/rtl/slist.c b/reactos/lib/rtl/slist.c new file mode 100644 index 00000000000..641ec6d8ed5 --- /dev/null +++ b/reactos/lib/rtl/slist.c @@ -0,0 +1,39 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Runtime Library + * PURPOSE: Slist Routines + * FILE: lib/rtl/slist.c + * PROGRAMERS: Stefan Ginsberg (stefan__100__@hotmail.com) + */ + +/* INCLUDES *****************************************************************/ + +#include + +#define NDEBUG +#include + +/* FUNCTIONS ***************************************************************/ + +VOID +NTAPI +RtlInitializeSListHead(IN PSLIST_HEADER ListHead) +{ + UNIMPLEMENTED; +} + +PSLIST_ENTRY +NTAPI +RtlFirstEntrySList(IN const SLIST_HEADER *ListHead) +{ + UNIMPLEMENTED; + return NULL; +} + +WORD +NTAPI +RtlQueryDepthSList(IN PSLIST_HEADER ListHead) +{ + UNIMPLEMENTED; + return 0; +} diff --git a/reactos/lib/rtl/thread.c b/reactos/lib/rtl/thread.c index aafe0b4fb0f..23ea94af439 100644 --- a/reactos/lib/rtl/thread.c +++ b/reactos/lib/rtl/thread.c @@ -277,5 +277,16 @@ _NtCurrentTeb(VOID) return NtCurrentTeb(); } - -/* EOF */ +NTSTATUS +NTAPI +RtlRemoteCall(IN HANDLE Process, + IN HANDLE Thread, + IN PVOID CallSite, + IN ULONG ArgumentCount, + IN PULONG Arguments, + IN BOOLEAN PassContext, + IN BOOLEAN AlreadySuspended) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} diff --git a/reactos/lib/rtl/unicode.c b/reactos/lib/rtl/unicode.c index 4b86aa6a9fd..8d469d78b7b 100644 --- a/reactos/lib/rtl/unicode.c +++ b/reactos/lib/rtl/unicode.c @@ -2233,4 +2233,13 @@ RtlValidateUnicodeString(IN ULONG Flags, } } -/* EOF */ +NTSTATUS +NTAPI +RtlFindCharInUnicodeString(IN ULONG Flags, + IN PUNICODE_STRING SearchString, + IN PCUNICODE_STRING MatchString, + OUT PUSHORT Position) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} diff --git a/reactos/ntoskrnl/rtl/libsupp.c b/reactos/ntoskrnl/rtl/libsupp.c index 52f388efa36..90055ee6e56 100644 --- a/reactos/ntoskrnl/rtl/libsupp.c +++ b/reactos/ntoskrnl/rtl/libsupp.c @@ -118,7 +118,7 @@ LdrShutdownThread(VOID) PPEB STDCALL -RtlpCurrentPeb(VOID) +RtlGetCurrentPeb(VOID) { return ((PEPROCESS)(KeGetCurrentThread()->ApcState.Process))->Peb; }