我想向我的应用程序添加功能,允许检测 Windows 操作系统上播放/捕获设备的到达和断开连接。就像在 Skype 中一样 - 当您拔下设备时 - 它会显示设备丢失的通知,例如要求您选择另一个设备。
我正在使用 DirectSound。我认为可以有两种方法来解决这个问题。
- 在单独的线程中调用 EnumerateDevices 回调并手动检测更改。
- 以某种方式处理 WM_DEVICECHANGE 消息。但是 AFAIK WM_DEVICECHANGE 有一些限制。顺便说一句,它不适用于“智能”声卡 - 允许将任何类型的设备插入任何接收器。如果我在设备管理器中禁用设备 - WM_DEVICHANGE 到达。如果我手动拔下耳机插孔 - 没有任何反应。但我需要处理这种情况。
请建议正确的方法。
提前致谢。