From 5d6f81cb083d10e7c0aaca6711663db656152fb9 Mon Sep 17 00:00:00 2001 From: Dibyamartanda Samanta Date: Fri, 24 May 2024 10:28:15 +0200 Subject: [PATCH] [NTOSKRNL:CC] Add RAII Wrapper Spinlock Guard --- NTOSKRNL/CC/ccinternal.hpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/NTOSKRNL/CC/ccinternal.hpp b/NTOSKRNL/CC/ccinternal.hpp index 9c246ba..3965529 100644 --- a/NTOSKRNL/CC/ccinternal.hpp +++ b/NTOSKRNL/CC/ccinternal.hpp @@ -48,4 +48,23 @@ IsGoToNextMap(IN PSHARED_CACHE_MAP SharedMap, IN ULONG TargetPages) } return FALSE; -} \ No newline at end of file +} + +/* Later Move it to XDK */ +class SpinLockSharedGuard { +public: + SpinLockSharedGuard(PEX_SPIN_LOCK SpinLock) : m_SpinLock(SpinLock) { + m_OldIrql = ExAcquireSpinLockShared(m_SpinLock); + } + + ~SpinLockSharedGuard() { + ExReleaseSpinLockShared(m_SpinLock, m_OldIrql); + } + + SpinLockSharedGuard(const SpinLockSharedGuard&) = delete; + SpinLockSharedGuard& operator=(const SpinLockSharedGuard&) = delete; + +private: + PEX_SPIN_LOCK m_SpinLock; + KIRQL m_OldIrql; +}; \ No newline at end of file