diff --git a/UsbDk/UsbDkUtil.h b/UsbDk/UsbDkUtil.h index c0f2e0f..cad020a 100644 --- a/UsbDk/UsbDkUtil.h +++ b/UsbDk/UsbDkUtil.h @@ -43,25 +43,29 @@ private: CWdmSpinLock& operator= (const CWdmSpinLock&) = delete; }; -template -class CLockedContext +template +class CBaseLockedContext { public: - CLockedContext(T &LockObject) + CBaseLockedContext(T &LockObject) : m_LockObject(LockObject) - { m_LockObject.Lock(); } + { + (m_LockObject.*LockFunc)(); + } - ~CLockedContext() - { m_LockObject.Unlock(); } + ~CBaseLockedContext() + { + (m_LockObject.*UnlockFunc)(); + } -private: +protected: T &m_LockObject; - - CLockedContext(const CLockedContext&) = delete; - CLockedContext& operator= (const CLockedContext&) = delete; + CBaseLockedContext(const CBaseLockedContext&) = delete; + CBaseLockedContext& operator= (const CBaseLockedContext&) = delete; }; -typedef CLockedContext TSpinLocker; +template +using CLockedContext = CBaseLockedContext ; class CWdmRefCounter {