音量控制項
管理共用模式數據流的用戶端通常會使用 WASAPI 中的 ISimpleAudioVolume 和 IAudioSessionEvents 介面來控制及監視數據流磁碟區層級。 透過 ISimpleAudioVolume 介面中的方法,用戶端可以取得並設定共用模式數據流所屬音訊會話的音量層級。 如果 Sndvol 或其他應用程式變更會話磁碟區層級,用戶端可以透過 IAudioSessionEvents 介面接收變更的通知。
管理獨佔模式數據流的用戶端通常會使用 EndpointVolume API 中的 IAudioEndpointVolume 和 IAudioEndpointVolumeCallback 介面來控制及監視數據流磁碟區層級。 透過 IAudioEndpointVolume 介面中的方法,用戶端可以取得和設定音訊端點裝置的音量層級。 如果 Sndvol 或其他應用程式變更端點裝置的磁碟區層級,用戶端可以透過 IAudioEndpointVolumeCallback 介面接收變更通知。
如音訊會話中所述,Sndvol 是系統音量控制程式。 它會顯示系統中音訊轉譯端點裝置的音量控件。 (目前,它不會顯示音訊擷取端點裝置的音量控件。若要檢視特定裝置的音量控件,請單擊 功能表欄中的 [裝置 ],然後從可用的裝置清單中選取裝置名稱。
Sndvol 視窗會將裝置的音量控件分成兩個群組。 視窗左側的群組方塊會標示為 [裝置]。 [裝置] 方塊包含由 IAudioEndpointVolume 介面控制的單一音量控制件。 用戶可以透過 IAudioEndpointVolumeCallback 介面來監視使用者對此磁碟區控件所做的變更。
Sndvol 視窗右側的群組方塊會標示為 [應用程式]。 [ 應用程式 ] 方塊包含目前共用裝置之應用程式的磁碟區控制件。 對於在共用模式中使用裝置的應用程式,磁碟區控件代表ISimpleAudioVolume介面所控制的磁碟區層級。 用戶可以透過 IAudioSessionEvents 介面監視這些磁碟區控件所做的變更。
雖然共用模式應用程式可以使用其 IAudioSessionEvents 介面來監視使用者在 Sndvol 視窗的 [應用程式] 方塊中對應用程式音量控件所做的變更,但應用程式無法監視其他不相關應用程式的磁碟區控件變更。 同樣地,應用程式可以透過 ISimpleAudioVolume 介面變更其音訊會話的音量層級,但無法變更屬於其他不相關應用程式的會話音量層級。
不過,兩個或多個相關應用程式(或相同應用程式的實例)可以藉由將音訊串流指派給相同的跨進程會話,或將各自的會話與相同的群組參數產生關聯,在 Sndvol 視窗中的 [應用程式] 方塊中共用相同的音量控制。 如需詳細資訊,請參閱 音訊會話 和 群組參數。
WASAPI 提供兩個額外的介面 IChannelAudioVolume 和 IAudioStreamVolume,以控制共用模式數據流的磁碟區層級。 這些介面主要供特殊用戶端使用,這些用戶端需要控制會話中個別通道的磁碟區層級,或會話中的個別數據流。
DeviceTopology API 可讓用戶端存取音訊配接器拓撲中的音量控制。 不過,管理獨佔模式數據流的用戶端通常會使用 EndpointVolume API,而不是 DeviceTopology API 來控制數據流磁碟區層級。 EndpointVolume API 可透過兩種方式簡化端點裝置磁碟區的控制。 首先,如果端點裝置實作硬體磁碟區控制,DeviceTopology API 會要求用戶端周遊裝置拓撲,以搜尋硬體控制。 相反地,EndpointVolume API 會自動尋找客戶端的硬體磁碟區控制。 其次,如果端點裝置未實作硬體磁碟區控制,DeviceTopology 用戶端必須在軟體中實作磁碟區控制。 相反地,EndpointVolume API 會自動以軟體磁碟區控件取代遺漏的硬體控制。
下列各節說明音訊會話和音訊端點裝置的音量控制:
相關主題