Module: wine
Branch: master
Commit: 959dea0c09201683582cda47b666edc1d5eb9c57
URL:
https://gitlab.winehq.org/wine/wine/-/commit/959dea0c09201683582cda47b666ed…
Author: Alexandre Julliard <julliard(a)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*);