//+----------------------------------------------------------------------------
//
// File:     mutex.h
//
// Module:   CMSETUP.LIB, CMDIAL32.DLL, CMDL32.EXE
//
// Synopsis: Definition of the class CNamedMutex
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Author:   fengsun    Created    02/26/98
//
//+----------------------------------------------------------------------------


#ifndef __CM_MUTEXT_H
#define __CM_MUTEXT_H

#include <windows.h>
#include "cmdebug.h"

//+---------------------------------------------------------------------------
//
//	class CNamedMutex
//
//	Description: A class to lock/unlock a named mutex
//               The destructor releases the mutex.
//
//	History:	fengsun	Created		2/19/98
//
//----------------------------------------------------------------------------

class CNamedMutex
{
public:
    CNamedMutex() {m_hMutex = NULL; m_fOwn = FALSE;}
    ~CNamedMutex() {Unlock();}

    BOOL Lock(LPCTSTR lpName, BOOL fWait = FALSE, DWORD dwMilliseconds = INFINITE, BOOL fNoAbandon = FALSE);
    void Unlock();
protected:
    HANDLE m_hMutex; // the handle of the mutex
    BOOL m_fOwn;     // whther we own the mutex
};

#endif //__CM_MUTEXT_H