#include "wdmlock.h"

#pragma PAGEDCODE
CLock* CWDMLock::create(VOID)
{ return new (NonPagedPool) CWDMLock; }

#pragma PAGEDCODE
VOID	CWDMLock::initializeSpinLock(PKSPIN_LOCK SpinLock)
{
	  KeInitializeSpinLock(SpinLock);
}

#pragma PAGEDCODE
VOID	CWDMLock::acquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL oldIrql)
{
	  KeAcquireSpinLock(SpinLock,oldIrql);
}

#pragma PAGEDCODE
VOID	CWDMLock::releaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL oldIrql)
{
	  KeReleaseSpinLock(SpinLock,oldIrql);
}

#pragma PAGEDCODE
VOID	CWDMLock::acquireCancelSpinLock(PKIRQL Irql)
{
	::IoAcquireCancelSpinLock(Irql);
}

#pragma PAGEDCODE
VOID	CWDMLock::releaseCancelSpinLock(KIRQL Irql)
{
	::IoReleaseCancelSpinLock(Irql);
}


#pragma PAGEDCODE
LONG	CWDMLock::interlockedIncrement(IN PLONG  Addend)
{
	return ::InterlockedIncrement(Addend);
}

#pragma PAGEDCODE
LONG	CWDMLock::interlockedDecrement(IN PLONG  Addend)
{
	return ::InterlockedDecrement(Addend);
}