From 6ed15a6fd6254ce74a73b782ecc7d78f52de90dd Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sat, 25 Oct 2025 17:00:46 -0700 Subject: [PATCH] Windows: Implement support for SRWLock shared Exclusive was already implemented. --- Source/Windows/Common/WinAPI/Sync.cpp | 12 ++++++++++++ Source/Windows/include/winternl.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/Source/Windows/Common/WinAPI/Sync.cpp b/Source/Windows/Common/WinAPI/Sync.cpp index 0b5532d34..aff3bf156 100644 --- a/Source/Windows/Common/WinAPI/Sync.cpp +++ b/Source/Windows/Common/WinAPI/Sync.cpp @@ -28,6 +28,18 @@ void ReleaseSRWLockExclusive(PSRWLOCK SRWLock) { RtlReleaseSRWLockExclusive(SRWLock); } +void AcquireSRWLockShared(PSRWLOCK SRWLock) { + RtlAcquireSRWLockShared(SRWLock); +} + +void ReleaseSRWLockShared(PSRWLOCK SRWLock) { + RtlReleaseSRWLockShared(SRWLock); +} + +DLLEXPORT_FUNC(BOOLEAN, TryAcquireSRWLockShared, (PSRWLOCK SRWLock)) { + return RtlTryAcquireSRWLockShared(SRWLock); +} + DLLEXPORT_FUNC(BOOLEAN, TryAcquireSRWLockExclusive, (PSRWLOCK SRWLock)) { return RtlTryAcquireSRWLockExclusive(SRWLock); } diff --git a/Source/Windows/include/winternl.h b/Source/Windows/include/winternl.h index 8eb81921b..04d8282ff 100644 --- a/Source/Windows/include/winternl.h +++ b/Source/Windows/include/winternl.h @@ -540,6 +540,9 @@ NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE, const WOW64_CONTEXT*); void WINAPI Wow64ProcessPendingCrossProcessItems(void); NTSTATUS WINAPI Wow64SystemServiceEx(UINT, UINT*); NTSTATUS WINAPI RtlWow64SuspendThread(HANDLE, ULONG*); +void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*); +void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*); +BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK*); #ifdef __cplusplus }