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