IPerChannelDbLevel::SetLevel 方法 (devicetopology.h)

SetLevel 方法设置指定通道的音量级别(以分贝为单位)。

语法

HRESULT SetLevel(
  [in] UINT    nChannel,
  [in] float   fLevelDB,
  [in] LPCGUID pguidEventContext
);

参数

[in] nChannel

所选通道的编号。 如果音频流具有 N 个通道,则通道的编号从 0 到 N – 1。 若要获取流中的通道数,请调用 IPerChannelDbLevel::GetChannelCount 方法。

[in] fLevelDB

以分贝为单位的新音量级别。 正值表示增益,负值表示衰减。

[in] pguidEventContext

IControlChangeNotify::OnNotify 方法的上下文值。 此参数指向事件上下文 GUID。 如果 SetLevel 调用更改级别控件的状态,则已注册具有该控件的 IControlChangeNotify 接口的所有客户端都会收到通知。 在 OnNotify 方法的实现中,客户端可以检查事件上下文 GUID,以发现它是还是另一个客户端是 control-change 事件的源。 如果调用方为此参数提供 NULL 指针,则客户端的通知方法将收到 NULL 上下文指针。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
E_INVALIDARG
参数 nChannel 在范围外。
E_OUTOFMEMORY
内存不足。

注解

如果调用方为 fLevelDB 指定了一个确切的单步执行值, 则 SetLevel 方法将成功完成。 后续对 IPerChannelDbLevel::GetLevel 方法的调用将返回已设置的值或以下值之一:

  • 如果设置的值低于最小值, 则 GetLevel 方法将返回最小值。
  • 如果设置的值高于最大值, 则 GetLevel 方法将返回最大值。
  • 如果设置值介于两个单步执行值之间, 则 GetLevel 方法将返回一个值,该值可以是上述下一个单步执行值,也可以是设置值下面的单步执行值;从设置值到相邻步进值的相对距离并不重要。 GetLevel 方法返回的值是对信号路径影响较大值。

要求

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

另请参阅

IPerChannelDbLevel 接口

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange