reactos/sdk/lib/drivers/wdf/shared/inc/primitives/km/mxlockkm.h
Victor Perevertkin 1f377076d7
[WDF] Fix KMDF so it can compile with ReactOS SDK
Not all files are included, but these are necessary to compile cdrom driver.
So far it can only be statically linked with drivers, a proper
implementation requires wdfldr helper driver
2020-11-03 00:06:27 +03:00

115 lines
1.5 KiB
C++

/*++
Copyright (c) Microsoft Corporation
ModuleName:
MxLockKm.h
Abstract:
Kernel mode implementation of lock
class defined in MxLock.h
Author:
Revision History:
--*/
#pragma once
#include "dbgmacros.h"
typedef KSPIN_LOCK MdLock;
#include "mxlock.h"
__inline
MxLock::MxLock(
)
{
CLEAR_DBGFLAG_INITIALIZED;
MxLock::Initialize();
}
__inline
VOID
MxLockNoDynam::Initialize(
)
{
KeInitializeSpinLock(&m_Lock);
SET_DBGFLAG_INITIALIZED;
}
_Acquires_lock_(this->m_Lock)
__drv_maxIRQL(DISPATCH_LEVEL)
__drv_setsIRQL(DISPATCH_LEVEL)
__inline
VOID
MxLockNoDynam::Acquire(
__out __drv_deref(__drv_savesIRQL) KIRQL * OldIrql
)
{
ASSERT_DBGFLAG_INITIALIZED;
KeAcquireSpinLock(&m_Lock, OldIrql);
}
_Acquires_lock_(this->m_Lock)
__drv_requiresIRQL(DISPATCH_LEVEL)
__inline
VOID
MxLockNoDynam::AcquireAtDpcLevel(
)
{
ASSERT_DBGFLAG_INITIALIZED;
KeAcquireSpinLockAtDpcLevel(&m_Lock);
}
_Releases_lock_(this->m_Lock)
__drv_requiresIRQL(DISPATCH_LEVEL)
__inline
VOID
MxLockNoDynam::Release(
__drv_restoresIRQL KIRQL NewIrql
)
{
ASSERT_DBGFLAG_INITIALIZED;
KeReleaseSpinLock(&m_Lock, NewIrql);
}
_Releases_lock_(this->m_Lock)
__drv_requiresIRQL(DISPATCH_LEVEL)
__inline
VOID
MxLockNoDynam::ReleaseFromDpcLevel(
)
{
ASSERT_DBGFLAG_INITIALIZED;
KeReleaseSpinLockFromDpcLevel(&m_Lock);
}
__inline
VOID
MxLockNoDynam::Uninitialize(
)
{
CLEAR_DBGFLAG_INITIALIZED;
}
__inline
MxLock::~MxLock(
)
{
CLEAR_DBGFLAG_INITIALIZED;
}