reactos/base/services/audiosrv/pnp_list_lock.c
Cameron Gutman c2d0d784c7 [USB-BRINGUP-TRUNK]
- Create a branch to do a proper merge of USB work from a trunk base instead of from cmake-bringup
- In the future, DO NOT under any circumstances branch another branch. This leads to merge problems!

svn path=/branches/usb-bringup-trunk/; revision=55018
2012-01-20 20:58:46 +00:00

57 lines
1.5 KiB
C

/*
* PROJECT: ReactOS
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/services/audiosrv/list_lock.c
* PURPOSE: Audio Service Plug and Play list locking mechanism
* COPYRIGHT: Copyright 2007 Andrew Greenwood
*/
#include "audiosrv.h"
static HANDLE audio_device_list_lock = NULL;
BOOL
InitializeAudioDeviceListLock()
{
/* The security stuff is to make sure the mutex can be grabbed by
other processes - is this the best idea though ??? */
SECURITY_DESCRIPTOR security_descriptor;
SECURITY_ATTRIBUTES security;
InitializeSecurityDescriptor(&security_descriptor, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&security_descriptor, TRUE, 0, FALSE);
security.nLength = sizeof(SECURITY_ATTRIBUTES);
security.lpSecurityDescriptor = &security_descriptor;
security.bInheritHandle = FALSE;
audio_device_list_lock = CreateMutex(&security,
FALSE,
AUDIO_LIST_LOCK_NAME);
return ( audio_device_list_lock != NULL );
}
VOID
KillAudioDeviceListLock()
{
CloseHandle(audio_device_list_lock);
audio_device_list_lock = NULL;
}
VOID
LockAudioDeviceList()
{
assert( audio_device_list_lock != NULL );
WaitForSingleObject(audio_device_list_lock, INFINITE);
}
VOID
UnlockAudioDeviceList()
{
assert( audio_device_list_lock != NULL );
ReleaseMutex(audio_device_list_lock);
}