IAudioSessionEvents::OnChannelVolumeChanged 方法 (audiopolicy.h)

OnChannelVolumeChanged 方法通知客户端会话子混合中音频通道的音量级别已更改。

语法

HRESULT OnChannelVolumeChanged(
  [in] DWORD    ChannelCount,
  [in] float [] NewChannelVolumeArray,
  [in] DWORD    ChangedChannel,
  [in] LPCGUID  EventContext
);

参数

[in] ChannelCount

通道计数。 此参数指定会话子混合中的音频通道数。

[in] NewChannelVolumeArray

指向卷级别的数组的指针。 每个元素都是 float 类型的值,用于指定特定通道的音量级别。 每个音量级别是 0.0 到 1.0 范围内的值,其中 0.0 表示静音,1.0 表示完整音量 (无衰减) 。 数组中的元素数由 ChannelCount 参数指定。 如果音频流包含 n 个通道,则通道的编号从 0 到 n – 1。 其索引与通道编号匹配的数组元素包含该通道的音量级别。 假设数组仅在调用期间保持有效。

[in] ChangedChannel

音量级别更改的通道数。 将此值用作 NewChannelVolumeArray 数组中的索引。 如果会话子混合包含 n 个通道,则通道的编号从 0 到 n – 1。 例如,如果由于调用 IChannelAudioVolume::SetAllVolumes 方法 () 而更改了多个通道, 则 ChangedChannel 的值 (DWORD) (-1) 。

[in] EventContext

事件上下文值。 此值与调用方在发起通道音量级别更改的调用中传递给 IChannelAudioVolume::SetChannelVolumeIChannelAudioVolume::SetAllVolumes 方法的值相同。 有关详细信息,请参阅“备注”。

返回值

如果该方法成功,则它会返回 S_OK。 如果该方法失败,则会返回错误代码。

注解

每次调用 IChannelAudioVolume::SetChannelVolumeIChannelAudioVolume::SetAllVolumes 方法成功更新会话子混合中一个或多个通道的卷级别时,会话管理器都会调用此方法。 请注意,无论新通道音量级别或级别的值是否与以前的通道音量级别不同, 都会发生 OnChannelVolumeChanged 调用。

EventContext 参数为客户端提供了一种区分其发起的通道卷更改和其他客户端发起的通道卷更改的方法。 调用 IChannelAudioVolume::SetChannelVolumeIChannelAudioVolume::SetAllVolumes 方法时,客户端传入其实现 OnChannelVolumeChanged 方法可以识别的 EventContext 参数值。

有关实现 IAudioSessionEvents 接口中方法的代码示例,请参阅 音频会话事件

要求

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

另请参阅

IAudioSessionEvents 接口

IChannelAudioVolume::SetAllVolumes

IChannelAudioVolume::SetChannelVolume