IPerChannelDbLevel::SetLevelAllChannels 方法 (devicetopology.h)
SetLevelAllChannels 方法设置音频流中所有声道的音量级别(以分贝为单位)。
语法
HRESULT SetLevelAllChannels(
[in] float [] aLevelsDB,
[in] ULONG cChannels,
[in] LPCGUID pguidEventContext
);
参数
[in] aLevelsDB
指向卷级别数组的指针。 此参数指向调用方分配的 浮点 数组,该方法将所有通道的新音量级别(以分贝为单位)写入其中。 方法将特定通道的级别写入其索引与通道号匹配的数组元素中。 如果音频流包含 n 个通道,则通道编号为 0 到 n – 1。 若要获取流中的通道数,请调用 IPerChannelDbLevel::GetChannelCount 方法。
[in] cChannels
aLevelsDB 数组中的元素数。 如果此参数与音频流中的声道数不匹配,则方法在未修改 aLevelsDB 数组的情况下失败。
[in] pguidEventContext
IControlChangeNotify::OnNotify 方法的上下文值。 此参数指向事件上下文 GUID。 如果 SetLevelAllChannels 调用更改了级别控件的状态,则已注册具有该控件的 IControlChangeNotify 接口的所有客户端都会收到通知。 在 OnNotify 方法的实现中,客户端可以检查事件上下文 GUID,以发现它是还是另一个客户端是 control-change 事件的源。 如果调用方为此参数提供 NULL 指针,则客户端的通知方法将收到 NULL 上下文指针。
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。
返回代码 | 说明 |
---|---|
|
参数 cChannels 不等于通道数。 |
|
指针 LevelsDB 为 NULL。 |
|
内存不足。 |
备注
如果任何通道的指定级别值超出了 IPerChannelDbLevel::GetLevelRange 方法为该通道报告的范围, 则 SetLevelAllChannels 调用会将该值固定到支持的范围并成功完成。 后续调用 IPerChannelDbLevel::GetLevel 方法将检索用于该通道的实际值。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | devicetopology.h |