From ac5f55860502641441bb1b5b0a00d2fb6a95cd5a Mon Sep 17 00:00:00 2001 From: Dibyamartanda Samanta Date: Fri, 24 May 2024 10:38:19 +0200 Subject: [PATCH] RAII:: Added Spinlock Guard, --- NTOSKRNL/CC/ccinternal.hpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/NTOSKRNL/CC/ccinternal.hpp b/NTOSKRNL/CC/ccinternal.hpp index 3965529..cea2361 100644 --- a/NTOSKRNL/CC/ccinternal.hpp +++ b/NTOSKRNL/CC/ccinternal.hpp @@ -51,6 +51,30 @@ IsGoToNextMap(IN PSHARED_CACHE_MAP SharedMap, IN ULONG TargetPages) } /* Later Move it to XDK */ +class SpinLockGuard +{ +public: + + SpinLockGuard(KSPIN_LOCK_QUEUE_NUMBER QueueNumber) + : m_queueNumber(QueueNumber) + { + m_currentIrql = KeAcquireQueuedSpinLock(m_queueNumber); + } + + + ~SpinLockGuard() + { + KeReleaseQueuedSpinLock(m_queueNumber, m_currentIrql); + } + + SpinLockGuard(const SpinLockGuard&) = delete; + SpinLockGuard& operator=(const SpinLockGuard&) = delete; + +private: + KSPIN_LOCK_QUEUE_NUMBER m_queueNumber; + KIRQL m_currentIrql; +}; + class SpinLockSharedGuard { public: SpinLockSharedGuard(PEX_SPIN_LOCK SpinLock) : m_SpinLock(SpinLock) {