RAII:: Added Spinlock Guard,

这个提交包含在:
2024-05-24 10:38:19 +02:00
父节点 438ce9293c
当前提交 ac5f558605

查看文件

@@ -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) {