58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Lock.h
|
||
|
//
|
||
|
// Copyright (C) 1998, 1999 Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Abstract :
|
||
|
//
|
||
|
// This is the definition of the CLock class. This class was created in order to
|
||
|
// support automatic destruction of C++ object when an exception is thrown.
|
||
|
//
|
||
|
// Note :
|
||
|
//
|
||
|
// The CLock class is not thread safe (although the CCriticalSection class is). The CLock
|
||
|
// class should be used as a local variable when locking using a CCriticalSection object.
|
||
|
// This is done in order to warranty that all locks on an object are released when an
|
||
|
// exception is thrown.
|
||
|
//
|
||
|
// History :
|
||
|
//
|
||
|
// 05/06/1999 luish Created
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#if !defined(__LOCK_)
|
||
|
#define __LOCK_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <objbase.h>
|
||
|
#include "CriticalSection.h"
|
||
|
|
||
|
class CLock
|
||
|
{
|
||
|
public :
|
||
|
|
||
|
CLock(CCriticalSection * lpCriticalSection);
|
||
|
~CLock(void);
|
||
|
|
||
|
STDMETHOD (Lock) (void);
|
||
|
STDMETHOD (UnLock) (void);
|
||
|
|
||
|
private :
|
||
|
|
||
|
CCriticalSection * m_lpCriticalSection;
|
||
|
DWORD m_dwBaseLockCount;
|
||
|
DWORD m_dwLockCount;
|
||
|
};
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // __LOCK_
|