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。 如果失敗,可能的傳回碼包括但不限於下表所示的值。
傳回碼 | 描述 |
---|---|
|
參數 cChannels 不等於通道數目。 |
|
指標 aLevelsDB 為 Null。 |
|
記憶體不足。 |
備註
如果任何通道的指定層級值超出 IPerChannelDbLevel::GetLevelRange 方法針對該通道所報告的範圍, SetLevelAllChannels 呼叫會將值固定到支援的範圍,並順利完成。 後續呼叫 IPerChannelDbLevel::GetLevel 方法會擷取該通道所使用的實際值。
需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | devicetopology.h |