共用方式為


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::SetChannelVolume::SetChannelAudioVolume::SetAllVolumes 方法的值相同。 如需詳細資訊,請參閱<備註>。

傳回值

如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。

備註

會話管理員每次呼叫 IChannelAudioVolume::SetChannelVolumeIChannelAudioVolume::SetAllVolumes 方法時,都會呼叫此方法,成功更新會話子混音中的一或多個通道的磁碟區層級。 請注意,不論新的通道磁碟區層級或層級與先前通道磁碟區層級或層級的值不同, 都會發生 OnChannelVolumeChanged 呼叫。

EventContext 參數提供方法,可讓用戶端區分它所起始的通道磁碟區變更,以及一個其他用戶端起始的變更。 呼叫 IChannelAudioVolume::SetChannelVolumeIChannelAudioVolume::SetAllVolumes 方法時,用戶端會傳入 EventContext 參數值,其 OnChannelVolumeChanged 方法的實作可以辨識。

如需實作 IAudioSessionEvents 介面中方法的程式代碼範例,請參閱 音訊會話事件

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 audiopolicy.h

另請參閱

IAudioSessionEvents 介面

IChannelAudioVolume::SetAllVolumes

IChannelAudioVolume::SetChannelVolume