2

我想向我的应用程序添加功能,允许检测 Windows 操作系统上播放/捕获设备的到达和断开连接。就像在 Skype 中一样 - 当您拔下设备时 - 它会显示设备丢失的通知,例如要求您选择另一个设备。

我正在使用 DirectSound。我认为可以有两种方法来解决这个问题。

  1. 在单独的线程中调用 EnumerateDevices 回调并手动检测更改。
  2. 以某种方式处理 WM_DEVICECHANGE 消息。但是 AFAIK WM_DEVICECHANGE 有一些限制。顺便说一句,它不适用于“智能”声卡 - 允许将任何类型的设备插入任何接收器。如果我在设备管理器中禁用设备 - WM_DEVICHANGE 到达。如果我手动拔下耳机插孔 - 没有任何反应。但我需要处理这种情况。

请建议正确的方法。

提前致谢。

4

1 回答 1

0

您可以使用 Core Audio SDK 在 Windows Vista 和更新版本中注册添加/删除音频设备通知

IMMDeviceEnumerator::RegisterEndpointNotificationCallback

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

于 2014-12-23T14:27:48.363 回答