IPerChannelDbLevel::SetLevelAllChannels 方法 (devicetopology.h)

SetLevelAllChannels方法會設定音訊資料流程中所有通道的音量層級,以分貝為單位。

語法

HRESULT SetLevelAllChannels(
  [in] float [] aLevelsDB,
  [in] ULONG    cChannels,
  [in] LPCGUID  pguidEventContext
);

參數

[in] aLevelsDB

磁片區層級陣列的指標。 此參數指向呼叫端配置的 float 陣列,此方法會針對所有通道以分貝為單位寫入新的磁片區層級。 方法會將特定通道的層級寫入陣列元素,其索引符合通道編號。 如果音訊資料流程包含 n 個通道,則通道編號為 0 到 n– 1。 若要取得資料流程中的通道數目,請呼叫 IPerChannelDbLevel::GetChannelCount 方法。

[in] cChannels

aLevelsDB陣列中的專案數目。 如果這個參數不符合音訊資料流程中的通道數目,方法就會失敗,而不需要修改 aLevelsDB 陣列。

[in] pguidEventContext

IControlChangeNotify::OnNotify方法的內容值。 此參數指向事件內容 GUID。 如果 SetLevelAllChannels 呼叫變更層級控制項的狀態,則已註冊 IControlChangeNotify 介面的所有用戶端都會使用該控制項接收通知。 在 OnNotify 方法的實作中,用戶端可以檢查事件內容 GUID,以探索事件內容 GUID 或另一個用戶端是否為控制項變更事件的來源。 如果呼叫端提供此參數的 Null 指標,則用戶端的通知方法會收到 Null 內容指標。

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括但不限於下表所示的值。

傳回碼 描述
E_INVALIDARG
參數 cChannels 不等於通道數目。
E_POINTER
指標 aLevelsDBNull
E_OUTOFMEMORY
記憶體不足。

備註

如果任何通道的指定層級值超出 IPerChannelDbLevel::GetLevelRange 方法針對該通道所報告的範圍, SetLevelAllChannels 呼叫會將值固定到支援的範圍,並順利完成。 後續呼叫 IPerChannelDbLevel::GetLevel 方法會擷取該通道所使用的實際值。

需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 devicetopology.h

另請參閱

IPerChannelDbLevel 介面

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange