69 lines
1.2 KiB
C++
69 lines
1.2 KiB
C++
#pragma once
|
|
|
|
|
|
#define ADMT_MUTEX _T("{9DC80865-6CC7-4988-8CC0-2AC5CA01879C}")
|
|
#define AGENT_MUTEX _T("{E2624042-8C80-4A83-B3DF-2B840DE366E5}")
|
|
#define DISPATCHER_MUTEX _T("{7C84F7DB-CF48-4B59-99D8-6B5A95276DBD}")
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// MigrationMutex Class
|
|
//
|
|
// This class may be used to prevent more than one instance of a migration
|
|
// task to run at the same time.
|
|
//
|
|
//
|
|
// Revision
|
|
// Initial 01/26/01 Mark Oluper
|
|
//---------------------------------------------------------------------------
|
|
|
|
class CMigrationMutex
|
|
{
|
|
public:
|
|
|
|
CMigrationMutex(LPCTSTR pszMutexName, bool bObtainOwnership = false) :
|
|
m_hMutex(CreateMutex(NULL, FALSE, pszMutexName))
|
|
{
|
|
if (bObtainOwnership)
|
|
{
|
|
ObtainOwnership();
|
|
}
|
|
}
|
|
|
|
~CMigrationMutex()
|
|
{
|
|
if (m_hMutex)
|
|
{
|
|
ReleaseOwnership();
|
|
CloseHandle(m_hMutex);
|
|
}
|
|
}
|
|
|
|
bool ObtainOwnership(DWORD dwTimeOut = INFINITE)
|
|
{
|
|
bool bObtain = false;
|
|
|
|
if (m_hMutex)
|
|
{
|
|
if (WaitForSingleObject(m_hMutex, dwTimeOut) == WAIT_OBJECT_0)
|
|
{
|
|
bObtain = true;
|
|
}
|
|
}
|
|
|
|
return bObtain;
|
|
}
|
|
|
|
void ReleaseOwnership()
|
|
{
|
|
if (m_hMutex)
|
|
{
|
|
ReleaseMutex(m_hMutex);
|
|
}
|
|
}
|
|
|
|
protected:
|
|
|
|
HANDLE m_hMutex;
|
|
};
|