取得串流路由的裝置端點

在 Windows 7 中,使用媒體基礎、DirectSound 和 Wave API 等核心音訊 API 的高階平臺 API,藉由處理從現有裝置切換至新的預設音頻端點的串流路由功能,來實作串流路由功能。 使用這些 API 的媒體應用程式(例如,在 IMMDevice 物件上啟動 IDirectSoundIBaseFilter 物件的應用程式)會使用數據流路由行為,而不需要對來源進行任何修改。

高階 API 會實作透過 IMMDeviceEnumerator::GetDefaultAudioEndpoint 取得之裝置端點的數據流路由。 如果應用程式串流至預設裝置,串流路由功能會如定義般運作。 如果串流是由任何其他機制擷取,即使它與預設裝置相同,也不會切換至新裝置。

直接使用核心音訊 API 的媒體應用程式(WASAPI 用戶端)可以提供任何轉譯或擷取裝置的自定義串流路由實作。 WASAPI 用戶端可以藉由將它限制為在設定為預設裝置的裝置上開啟的數據流,來復寫高階 API 所提供的模擬。 若要取得預設裝置端點的參考,客戶端必須呼叫 IMMDeviceEnumerator::GetDefaultAudioEndpoint 在此呼叫中,客戶端必須指定 dataFlow 參數,以指出它是否需要轉譯預設裝置的指標或擷取預設裝置。 用戶端也必須為 ERole 屬性中的端點指定適當的角色(eConsoleeCommunications)。 請勿使用 eMultimedia

如果應用程式串流至任何其他裝置,應用程式可以藉由指定端點標識符字串來取得裝置(藉由呼叫 IMMDeviceEnumerator::GetDevice)。

識別裝置之後,WASAPI 用戶端可以藉由處理裝置傳送的裝置和音訊會話通知,提供串流路由的實作。 如需這些通知的詳細資訊,請參閱 串流路由的相關通知。

關於 MMDevice API

關於 WASAPI

串流路由