Обнаружение прибытия / отключения аудиоустройства - PullRequest
2 голосов
/ 28 декабря 2010

Я хотел бы добавить в свое приложение функцию, которая позволит обнаруживать приход и отключение устройств воспроизведения / захвата в ОС Windows. Как и в Skype - когда вы отключаете устройство - оно показывает уведомление о том, что устройство потеряно и, например, просит вас выбрать другой.

Я использую DirectSound. Я думаю, что может быть два пути решения этой проблемы.

  1. В отдельном потоке вызывайте обратный вызов EnumerateDevices и вручную обнаруживайте изменения.
  2. Каким-то образом обработать сообщение WM_DEVICECHANGE. Но AFAIK WM_DEVICECHANGE имеет некоторые ограничения. Кстати, он не работает со «умными» звуковыми картами, которые позволяют подключать любые устройства к любой раковине. Если я отключаю устройство в диспетчере устройств - приходит WM_DEVICHANGE. Если я вручную отключу разъем наушников - ничего не произойдет. Но мне нужно справиться с такой ситуацией.

Пожалуйста, посоветуйте правильный подход.

Заранее спасибо.

1 Ответ

0 голосов
/ 23 декабря 2014

Вы можете зарегистрироваться для добавления / удаления уведомлений аудиоустройств в Windows Vista и новее, используя Core Audio SDK

IMMDeviceEnumerator :: RegisterEndpointNotificationCallback

См. http://msdn.microsoft.com/en-us/library/windows/desktop/dd371403(v=vs.85).aspx

...