3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/services/audiosrv/list_lock.c
5 * PURPOSE: Audio Service Plug and Play list locking mechanism
6 * COPYRIGHT: Copyright 2007 Andrew Greenwood
11 static HANDLE audio_device_list_lock
= NULL
;
14 InitializeAudioDeviceListLock()
16 /* The security stuff is to make sure the mutex can be grabbed by
17 other processes - is this the best idea though ??? */
19 SECURITY_DESCRIPTOR security_descriptor
;
20 SECURITY_ATTRIBUTES security
;
22 InitializeSecurityDescriptor(&security_descriptor
, SECURITY_DESCRIPTOR_REVISION
);
23 SetSecurityDescriptorDacl(&security_descriptor
, TRUE
, 0, FALSE
);
25 security
.nLength
= sizeof(SECURITY_ATTRIBUTES
);
26 security
.lpSecurityDescriptor
= &security_descriptor
;
27 security
.bInheritHandle
= FALSE
;
29 audio_device_list_lock
= CreateMutex(&security
,
31 AUDIO_LIST_LOCK_NAME
);
33 return ( audio_device_list_lock
!= NULL
);
37 KillAudioDeviceListLock()
39 CloseHandle(audio_device_list_lock
);
40 audio_device_list_lock
= NULL
;
46 assert( audio_device_list_lock
!= NULL
);
47 WaitForSingleObject(audio_device_list_lock
, INFINITE
);
51 UnlockAudioDeviceList()
53 assert( audio_device_list_lock
!= NULL
);
54 ReleaseMutex(audio_device_list_lock
);