Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.5 KiB

// @doc
/**********************************************************************
*
* @module GckCritSec |
*
* Implementation of CGckCritSection
*
* History
* ----------------------------------------------------------
* Mitchell S. Dernis Original
*
* (c) 1986-1998 Microsoft Corporation. All right reserved.
*
* @topic filter |
* CGckCritSection provides mutex/critical section support for CDeviceFilter
* it is abstracted into this class for easier porting to USER mode.
*
* CGckMutexHandle is used to hold the mutex that is held during a critical section.
* The kernel mode version uses critical section.
*
**********************************************************************/
#ifndef __GckCritSec_h__
#define __GckCritSec_h__
#ifdef COMPILE_FOR_WDM_KERNEL_MODE
//
// The kernel mode version of these classes
//
class CGckMutexHandle
{
public:
friend class CGckCritSection;
friend class CGckMutex;
CGckMutexHandle()
{
KeInitializeSpinLock(&m_SpinLock);
}
private:
KSPIN_LOCK m_SpinLock;
};
class CGckCritSection
{
public:
CGckCritSection(CGckMutexHandle *pMutexHandle):
m_pMutexHandle(pMutexHandle)
{
KeAcquireSpinLock(&m_pMutexHandle->m_SpinLock, &m_OldIrql);
}
~CGckCritSection()
{
KeReleaseSpinLock(&m_pMutexHandle->m_SpinLock, m_OldIrql);
}
private:
CGckMutexHandle *m_pMutexHandle;
KIRQL m_OldIrql;
};
#endif
//
// Place USER mode definitions here. (protecting with #ifdef of course).
//
#endif