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 #include <audiosrv/audiosrv.h>
13 static HANDLE audio_device_list_lock
= NULL
;
16 InitializeAudioDeviceListLock()
18 /* The security stuff is to make sure the mutex can be grabbed by
19 other processes - is this the best idea though ??? */
21 SECURITY_DESCRIPTOR security_descriptor
;
22 SECURITY_ATTRIBUTES security
;
24 InitializeSecurityDescriptor(&security_descriptor
, SECURITY_DESCRIPTOR_REVISION
);
25 SetSecurityDescriptorDacl(&security_descriptor
, TRUE
, 0, FALSE
);
27 security
.nLength
= sizeof(SECURITY_ATTRIBUTES
);
28 security
.lpSecurityDescriptor
= &security_descriptor
;
29 security
.bInheritHandle
= FALSE
;
31 audio_device_list_lock
= CreateMutex(&security
,
33 AUDIO_LIST_LOCK_NAME
);
35 return ( audio_device_list_lock
!= NULL
);
39 KillAudioDeviceListLock()
41 CloseHandle(audio_device_list_lock
);
42 audio_device_list_lock
= NULL
;
48 assert( audio_device_list_lock
!= NULL
);
49 WaitForSingleObject(audio_device_list_lock
, INFINITE
);
53 UnlockAudioDeviceList()
55 assert( audio_device_list_lock
!= NULL
);
56 ReleaseMutex(audio_device_list_lock
);