共用方式為


音量控制項

管理共用模式數據流的用戶端通常會使用 WASAPI 中的 ISimpleAudioVolumeIAudioSessionEvents 介面來控制及監視數據流磁碟區層級。 透過 ISimpleAudioVolume 介面中的方法,用戶端可以取得並設定共用模式數據流所屬音訊會話音量層級。 如果 Sndvol 或其他應用程式變更會話磁碟區層級,用戶端可以透過 IAudioSessionEvents 介面接收變更的通知。

管理獨佔模式數據流的用戶端通常會使用 EndpointVolume API 中的 IAudioEndpointVolumeIAudioEndpointVolumeCallback 介面來控制及監視數據流磁碟區層級。 透過 IAudioEndpointVolume 介面中的方法,用戶端可以取得和設定音訊端點裝置音量層級。 如果 Sndvol 或其他應用程式變更端點裝置的磁碟區層級,用戶端可以透過 IAudioEndpointVolumeCallback 介面接收變更通知。

如音訊會話中所述,Sndvol 是系統音量控制程式。 它會顯示系統中音訊轉譯端點裝置的音量控件。 (目前,它不會顯示音訊擷取端點裝置的音量控件。若要檢視特定裝置的音量控件,請單擊 功能表欄中的 [裝置 ],然後從可用的裝置清單中選取裝置名稱。

Sndvol 視窗會將裝置的音量控件分成兩個群組。 視窗左側的群組方塊會標示為 [裝置]。 [裝置] 方塊包含由 IAudioEndpointVolume 介面控制的單一音量控制件。 用戶可以透過 IAudioEndpointVolumeCallback 介面來監視使用者對此磁碟區控件所做的變更。

Sndvol 視窗右側的群組方塊會標示為 [應用程式]。 [ 應用程式 ] 方塊包含目前共用裝置之應用程式的磁碟區控制件。 對於在共用模式中使用裝置的應用程式,磁碟區控件代表ISimpleAudioVolume介面所控制的磁碟區層級。 用戶可以透過 IAudioSessionEvents 介面監視這些磁碟區控件所做的變更。

雖然共用模式應用程式可以使用其 IAudioSessionEvents 介面來監視使用者在 Sndvol 視窗的 [應用程式] 方塊中對應用程式音量控件所做的變更,但應用程式無法監視其他不相關應用程式的磁碟區控件變更。 同樣地,應用程式可以透過 ISimpleAudioVolume 介面變更其音訊會話的音量層級,但無法變更屬於其他不相關應用程式的會話音量層級。

不過,兩個或多個相關應用程式(或相同應用程式的實例)可以藉由將音訊串流指派給相同的跨進程會話,或將各自的會話與相同的群組參數產生關聯,在 Sndvol 視窗中的 [應用程式] 方塊中共用相同的音量控制。 如需詳細資訊,請參閱 音訊會話群組參數

WASAPI 提供兩個額外的介面 IChannelAudioVolumeIAudioStreamVolume,以控制共用模式數據流的磁碟區層級。 這些介面主要供特殊用戶端使用,這些用戶端需要控制會話中個別通道的磁碟區層級,或會話中的個別數據流。

DeviceTopology API 可讓用戶端存取音訊配接器拓撲中的音量控制。 不過,管理獨佔模式數據流的用戶端通常會使用 EndpointVolume API,而不是 DeviceTopology API 來控制數據流磁碟區層級。 EndpointVolume API 可透過兩種方式簡化端點裝置磁碟區的控制。 首先,如果端點裝置實作硬體磁碟區控制,DeviceTopology API 會要求用戶端周遊裝置拓撲,以搜尋硬體控制。 相反地,EndpointVolume API 會自動尋找客戶端的硬體磁碟區控制。 其次,如果端點裝置未實作硬體磁碟區控制,DeviceTopology 用戶端必須在軟體中實作磁碟區控制。 相反地,EndpointVolume API 會自動以軟體磁碟區控件取代遺漏的硬體控制。

下列各節說明音訊會話和音訊端點裝置的音量控制:

程式設計指南