【问题标题】:Detecting arrival/disconnection of audio device检测音频设备的到达/断开
【发布时间】:2011-05-31 13:24:59
【问题描述】:

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

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

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

请建议正确的方法。

提前致谢。

【问题讨论】:

    标签: c++ audio directsound


    【解决方案1】:

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

    IMMDeviceEnumerator::RegisterEndpointNotificationCallback

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      相关资源
      最近更新 更多