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.
 
 
 
 
 
 

131 lines
2.2 KiB

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
CritSec.cpp
Abstract:
This file provides implementation of the service
critical section wrapper.
Author:
Oded Sacher (OdedS) Nov, 2000
Revision History:
--*/
#include "CritSec.h"
/***********************************
* *
* CFaxCriticalSection Methodes *
* *
***********************************/
extern long
StatusNoMemoryExceptionFilter (DWORD dwExceptionCode); // Implemented in mem.c
BOOL
CFaxCriticalSection::Initialize()
/*++
Routine name : CFaxCriticalSection::Initialize
Routine description:
Initialize a critical section object
Author:
Oded Sacher (OdedS), Nov, 2000
Arguments:
Return Value:
BOOL.
--*/
{
Assert (FALSE == m_bInit);
__try
{
InitializeCriticalSection (&m_CritSec);
}
__except (StatusNoMemoryExceptionFilter(GetExceptionCode()))
{
SetLastError(GetExceptionCode());
return FALSE;
}
m_bInit = TRUE;
return TRUE;
} // CFaxCriticalSection::Initialize
#if (_WIN32_WINNT >= 0x0403)
BOOL
CFaxCriticalSection::InitializeAndSpinCount(DWORD dwSpinCount)
/*++
Routine name : CFaxCriticalSection::InitializeAndSpinCount
Routine description:
Initialize a critical section object with spin count
Author:
Oded Sacher (OdedS), Nov, 2000
Arguments:
Return Value:
BOOL
--*/
{
Assert (FALSE == m_bInit);
if (!InitializeCriticalSectionAndSpinCount (&m_CritSec, dwSpinCount))
{
return FALSE;
}
m_bInit = TRUE;
return TRUE;
} // CFaxCriticalSection::InitializeAndSpinCount
#endif
VOID
CFaxCriticalSection::SafeDelete()
/*++
Routine name : CFaxCriticalSection::SafeDelete
Routine description:
Deletes a critical section object if it is initialized
Author:
Oded Sacher (OdedS), Nov, 2000
Arguments:
Return Value:
--*/
{
if (TRUE == m_bInit)
{
DeleteCriticalSection(&m_CritSec);
m_bInit = FALSE;
}
return;
} // CFaxCriticalSection::SafeDelete