Module: wine Branch: master Commit: 959dea0c09201683582cda47b666edc1d5eb9c57 URL: https://gitlab.winehq.org/wine/wine/-/commit/959dea0c09201683582cda47b666edc...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jul 3 22:14:51 2023 +0200
ntdll: Implement RtlIsCurrentProcess/Thread.
---
dlls/ntdll/ntdll.spec | 2 ++ dlls/ntdll/process.c | 9 +++++++++ dlls/ntdll/thread.c | 9 +++++++++ include/winternl.h | 2 ++ 4 files changed, 22 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 4471a5e59d4..2be318b128a 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -835,6 +835,8 @@ @ stdcall RtlIsActivationContextActive(ptr) @ stdcall RtlIsCriticalSectionLocked(ptr) @ stdcall RtlIsCriticalSectionLockedByThread(ptr) +@ stdcall RtlIsCurrentProcess(long) +@ stdcall RtlIsCurrentThread(long) @ stdcall RtlIsDosDeviceName_U(wstr) @ stdcall -arch=x86_64 -norelay RtlIsEcCode(ptr) @ stub RtlIsGenericTableEmpty diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c index 0b4245fdd42..3f78559d8df 100644 --- a/dlls/ntdll/process.c +++ b/dlls/ntdll/process.c @@ -49,6 +49,15 @@ PEB * WINAPI RtlGetCurrentPeb(void) }
+/****************************************************************************** + * RtlIsCurrentProcess (NTDLL.@) + */ +BOOLEAN WINAPI RtlIsCurrentProcess( HANDLE handle ) +{ + return handle == NtCurrentProcess() || !NtCompareObjects( handle, NtCurrentProcess() ); +} + + /****************************************************************** * RtlWow64EnableFsRedirection (NTDLL.@) */ diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 15a686738ff..01733585a75 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -463,6 +463,15 @@ TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void) }
+/****************************************************************************** + * RtlIsCurrentThread (NTDLL.@) + */ +BOOLEAN WINAPI RtlIsCurrentThread( HANDLE handle ) +{ + return handle == NtCurrentThread() || !NtCompareObjects( handle, NtCurrentThread() ); +} + + /*********************************************************************** * _errno (NTDLL.@) */ diff --git a/include/winternl.h b/include/winternl.h index 8a8af8fd002..16829442982 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -4650,6 +4650,8 @@ NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING * NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE); NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *); NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *); +NTSYSAPI BOOLEAN WINAPI RtlIsCurrentProcess(HANDLE); +NTSYSAPI BOOLEAN WINAPI RtlIsCurrentThread(HANDLE); NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR); #ifdef __x86_64__ NTSYSAPI BOOLEAN WINAPI RtlIsEcCode(const void*);