IAudioEndpointVolumeCallback 接口 (endpointvolume.h)

IAudioEndpointVolumeCallback 接口提供音频终结点设备的音量级别和静音状态更改通知。 与本部分中由 WASAPI 系统组件实现的其他接口不同,EndpointVolume API 客户端实现 IAudioEndpointVolumeCallback 接口。 为了接收事件通知,客户端将指向其 IAudioEndpointVolumeCallback 接口的指针传递到 IAudioEndpointVolume::RegisterControlChangeNotify 方法。

注册其 IAudioEndpointVolumeCallback 接口后,客户端通过接口中的 OnNotify 方法以回调的形式接收事件通知。 当以下方法之一导致终结点设备的卷级别或静音状态发生更改时,会发生这些事件通知:

如果音频终结点设备实现硬件音量和静音控件, 则 IAudioEndpointVolume 接口使用硬件控件来管理设备的音量。 否则, IAudioEndpointVolume 接口在软件中实现音量和静音控制,对客户端透明。

如果设备具有硬件音量和静音控件,则通过上述列表中的方法对音量和静音设置所做的更改会影响共享模式和独占模式下设备的卷。 如果设备缺少硬件卷和静音控件,则通过这些方法对软件卷和静音控件所做的更改会影响共享模式下的设备卷,但不影响在独占模式下。 在独占模式下,客户端和设备直接交换音频数据,绕过软件控制。 但是,通过这些方法对软件控件所做的更改会生成事件通知,无论设备是在共享模式还是在独占模式下运行。 当设备切换到共享模式时,设备在独占模式下运行时对软件音量和静音控件所做的更改将生效。

若要确定设备是否具有硬件卷和静音控件,请调用 IAudioEndpointVolume::QueryHardwareSupport 方法。

在实现 IAudioEndpointVolumeCallback 接口时,客户端应遵守以下规则以避免死锁:

  • 接口中的方法必须是非阻止的。 在事件回调期间,客户端不应等待同步对象。
  • 客户端不应在事件回调期间调用 IAudioEndpointVolume::UnregisterControlChangeNotify 方法。
  • 客户端不应在事件回调期间释放 EndpointVolume API 对象上的最终引用。
有关实现 IAudioEndpointVolumeCallback 接口的代码示例,请参阅 Endpoint Volume Controls

继承

IAudioEndpointVolumeCallback 接口继承自 IUnknown 接口。 IAudioEndpointVolumeCallback 也有以下类型的成员:

方法

IAudioEndpointVolumeCallback 接口具有这些方法。

 
IAudioEndpointVolumeCallback::OnNotify

OnNotify 方法通知客户端音频终结点设备的音量级别或静音状态已更改。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 endpointvolume.h

另请参阅

核心音频接口

EndpointVolume API

IAudioEndpointVolume::RegisterControlChangeNotify

IAudioEndpointVolume::UnregisterControlChangeNotify