Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
mutex.cpp
Abstract:
SIS Groveler named mutex class
Authors:
John Douceur, 1998
Environment:
User Mode
Revision History:
--*/
#include "all.hxx"
NamedMutex::NamedMutex( const _TCHAR *name, SECURITY_ATTRIBUTES *security_attributes) { ASSERT(this != 0); mutex_handle = CreateMutex(security_attributes, FALSE, name); if (mutex_handle == 0) { DWORD err = GetLastError(); PRINT_DEBUG_MSG((_T("GROVELER: CreateMutex() failed with error %d\n"), err)); } }
NamedMutex::~NamedMutex() { ASSERT(this != 0); if (mutex_handle != 0) { int ok = CloseHandle(mutex_handle); if (!ok) { DWORD err = GetLastError(); PRINT_DEBUG_MSG((_T("GROVELER: CloseHandle() failed with error %d\n"), err)); } mutex_handle = 0; } }
bool NamedMutex::release() { ASSERT(this != 0); if (mutex_handle == 0) { return false; } BOOL ok = ReleaseMutex(mutex_handle); if (!ok) { DWORD err = GetLastError(); PRINT_DEBUG_MSG((_T("GROVELER: ReleaseMutex() failed with error %d\n"), err)); } return (ok != 0); }
bool NamedMutex::acquire( unsigned int timeout) { ASSERT(this != 0); if (mutex_handle == 0) { return false; } ASSERT(signed(timeout) >= 0); DWORD result = WaitForSingleObject(mutex_handle, timeout); if (result != WAIT_TIMEOUT && result != WAIT_OBJECT_0) { PRINT_DEBUG_MSG((_T("GROVELER: WaitForSingleObject() returned error %d\n"), result)); } return (result == WAIT_OBJECT_0); }
|