internal static void AudioDevicesClientClose() { if (pm_AudioDevicesCallback != null) { try { IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator()); deviceEnumerator.UnregisterEndpointNotificationCallback(pm_AudioDevicesCallback); pm_AudioDevicesCallback = null; pm_AudioDevicesEventArgs = null; if (deviceEnumerator != null) { Marshal.ReleaseComObject(deviceEnumerator); deviceEnumerator = null; } } catch { /* ignore */ } } }
internal static bool AudioDevicesClientOpen() { bool result = true; if (pm_AudioDevicesCallback == null) { try { IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator()); pm_AudioDevicesCallback = new AudioDevicesClient(); deviceEnumerator.RegisterEndpointNotificationCallback(pm_AudioDevicesCallback); pm_AudioDevicesEventArgs = new SystemAudioDevicesEventArgs(); if (deviceEnumerator != null) { Marshal.ReleaseComObject(deviceEnumerator); } } catch { result = false; } } return(result); }