RAII:: Added Spinlock Guard,

This commit is contained in:
Dibyamartanda Samanta 2024-05-24 10:38:19 +02:00
parent 438ce9293c
commit ac5f558605

View File

@ -51,6 +51,30 @@ IsGoToNextMap(IN PSHARED_CACHE_MAP SharedMap, IN ULONG TargetPages)
} }
/* Later Move it to XDK */ /* 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 { class SpinLockSharedGuard {
public: public:
SpinLockSharedGuard(PEX_SPIN_LOCK SpinLock) : m_SpinLock(SpinLock) { SpinLockSharedGuard(PEX_SPIN_LOCK SpinLock) : m_SpinLock(SpinLock) {