Я хотел бы добавить в свое приложение функцию, которая позволит обнаруживать приход и отключение устройств воспроизведения / захвата в ОС Windows. Как и в Skype - когда вы отключаете устройство - оно показывает уведомление о том, что устройство потеряно и, например, просит вас выбрать другой.
Я использую DirectSound. Я думаю, что может быть два пути решения этой проблемы.
- В отдельном потоке вызывайте обратный вызов EnumerateDevices и вручную обнаруживайте изменения.
- Каким-то образом обработать сообщение WM_DEVICECHANGE. Но AFAIK WM_DEVICECHANGE имеет некоторые ограничения. Кстати, он не работает со «умными» звуковыми картами, которые позволяют подключать любые устройства к любой раковине. Если я отключаю устройство в диспетчере устройств - приходит WM_DEVICHANGE. Если я вручную отключу разъем наушников - ничего не произойдет. Но мне нужно справиться с такой ситуацией.
Пожалуйста, посоветуйте правильный подход.
Заранее спасибо.