From 577621e0823efcc50b5d66e675d075ddc263b942 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Thu, 6 Aug 2026 16:07:17 +0200 Subject: [PATCH] Add RAII guard for kernel guarded regions --- xtoskrnl/includes/ke/guard.hh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/xtoskrnl/includes/ke/guard.hh b/xtoskrnl/includes/ke/guard.hh index 42b2dd7f6..893405067 100644 --- a/xtoskrnl/includes/ke/guard.hh +++ b/xtoskrnl/includes/ke/guard.hh @@ -53,6 +53,40 @@ namespace KE CriticalRegionGuard& operator=(const CriticalRegionGuard&) = delete; }; + class GuardedRegionGuard + { + private: + BOOLEAN Owned; + PKTHREAD SystemThread; + + public: + GuardedRegionGuard(IN PKTHREAD Thread = NULLPTR, + IN BOOLEAN Acquire = TRUE) + { + Owned = Acquire; + SystemThread = Thread; + if(Owned) + { + if(!SystemThread) + { + SystemThread = KE::Processor::GetCurrentThread(); + } + KE::KThread::EnterGuardedRegion(SystemThread); + } + } + + ~GuardedRegionGuard() + { + if(Owned) + { + KE::KThread::LeaveGuardedRegion(SystemThread); + } + } + + GuardedRegionGuard(const GuardedRegionGuard&) = delete; + GuardedRegionGuard& operator=(const GuardedRegionGuard&) = delete; + }; + class PushLockExclusiveGuard { private: