音量控件
管理共用模式數據流的用戶端通常會使用 ISimpleAudioVolume 和 IAudioSessionEvents 介面,WASAPI 來控制和監視數據流磁碟區層級。 透過 ISimpleAudioVolume 介面中的方法,用戶端可以取得和設定共用模式數據流所屬 音訊 工作階段的音量層級。 如果 Sndvol 或其他應用程式變更會話磁碟區層級,用戶端可以透過 IAudioSessionEvents 介面接收變更的通知。
管理獨佔模式數據流的用戶端通常會使用 IAudioEndpointVolume 和 IAudioEndpointVolumeCallback 介面 EndpointVolume API 來控制和監視數據流磁盤區層級。 透過 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 會自動以軟體磁碟區控件取代遺漏的硬體控制。
下列各節說明音訊會話和音訊端點裝置的音量控制:
相關主題