IAudioEndpointVolumeCallback 介面 (endpointvolume.h)
IAudioEndpointVolumeCallback 介面會提供音訊端點裝置音量層級變更和靜音狀態的通知。 不同於本節中由 WASAPI 系統元件實作的其他介面,EndpointVolume API 用戶端會實作 IAudioEndpointVolumeCallback 介面。 若要接收事件通知,用戶端會將指標傳遞至其 IAudioEndpointVolumeCallback 介面至 IAudioEndpointVolume::RegisterControlChangeNotify 方法。
註冊其 IAudioEndpointVolumeCallback 介面之後,用戶端會透過介面中的 OnNotify 方法來接收事件通知。 當下列其中一種方法造成端點裝置的磁碟區層級或靜音狀態變更時,就會發生這些事件通知:
- IAudioEndpointVolume::SetChannelVolumeLevel
- IAudioEndpointVolume::SetChannelVolumeLevelScalar
- IAudioEndpointVolume::SetMasterVolumeLevel
- IAudioEndpointVolume::SetMasterVolumeLevelScalar
- IAudioEndpointVolume::SetMute
- IAudioEndpointVolume::VolumeStepDown
- IAudioEndpointVolume::VolumeStepUp
如果裝置具有硬體磁碟區和靜音控件,則透過上述清單中的方法對磁碟區和靜音設定所做的變更會影響共用模式和獨佔模式中的裝置磁碟區。 如果裝置缺少硬體磁碟區和靜音控件,則透過這些方法對軟體磁碟區和靜音控件所做的變更會影響裝置在共用模式中的磁碟區,但不在獨佔模式中。 在獨佔模式中,客戶端和裝置會直接交換音訊數據,而略過軟體控件。 不過,透過這些方法對軟體控件所做的變更會產生事件通知,不論裝置是處於共用模式還是處於獨佔模式。 當裝置切換到共用模式時,對軟體磁碟區和靜音控件所做的變更會在裝置切換至共用模式時生效。
若要判斷裝置是否有硬體磁碟區和靜音控件,請呼叫 IAudioEndpointVolume::QueryHardwareSupport 方法。
在實作 IAudioEndpointVolumeCallback 介面時,客戶端應該觀察這些規則以避免死結:
- 介面中的方法必須是非封鎖。 用戶端不應該在事件回呼期間等候同步處理物件。
- 客戶端絕對不應該在事件回呼期間呼叫 IAudioEndpointVolume::UnregisterControlChangeNotify 方法。
- 客戶端絕對不應該在事件回呼期間,在 EndpointVolume API 對象上釋放最終參考。
繼承
IAudioEndpointVolumeCallback 介面繼承自 IUnknown 介面。 IAudioEndpointVolumeCallback 也有下列類型的成員:
方法
IAudioEndpointVolumeCallback 介面具有這些方法。
IAudioEndpointVolumeCallback::OnNotify OnNotify 方法會通知用戶端音訊端點裝置的音量層級或靜音狀態已變更。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | endpointvolume.h |