列舉音頻裝置
用戶端音訊應用程式的第一項工作是尋找要使用的適當音訊裝置。 MMDevice API 可讓用戶端探索系統中的音訊端點裝置,並判斷哪些裝置適合應用程式使用。 此 API 可讓用戶端擷取可用端點裝置的集合,並取得每個裝置的功能。 頭檔 Mmdeviceapi.h 定義 MMDevice API 中的介面。
音訊配接器可能包含數個裝置,例如波浪轉譯裝置和波浪擷取裝置。 這些是配接器裝置,而不是端點裝置。 如先前所述,配接器裝置是由 隨插即用 管理員註冊,與端點管理員所註冊的端點裝置相反。 每個配接器裝置通常支援一或多個端點裝置。 轉譯端點裝置(例如耳機)可以從用戶端應用程式接收音訊數據的串流,而擷取端點裝置(例如麥克風)可以將音訊串流傳送至用戶端應用程式。
在列舉系統中的端點裝置之前,客戶端必須先呼叫 Windows CoCreateInstance 函式來建立裝置列舉值。 裝置列舉值是具有 IMMDeviceEnumerator 介面的物件。 如需 CoCreateInstance 的相關信息,請參閱 Windows SDK 檔。
用戶端會 呼叫 IMMDeviceEnumerator::EnumAudioEndpoints 方法來建立端點物件的集合。 每個端點物件都代表系統中的音訊端點裝置。 在此呼叫中,用戶端會指定集合是否應該包含系統中的所有轉譯裝置、所有擷取裝置或兩者。
裝置集合是具有 IMMDeviceCollection 介面的物件。 裝置集合中的每個專案都是至少具有下列兩個介面的連接點物件:
- IMMDevice 介面。 用戶端會呼叫 IMMDeviceCollection::Item 方法,以取得裝置集合中端點物件的 IMMDevice 介面參考。
- IMMEndpoint 介面。 用戶端會呼叫 IMMDevice::QueryInterface 方法,以取得端點物件的 IMMEndpoint 介面參考。
擷取端點裝置集合之後,客戶端可以查詢集合中個別裝置的屬性,以判斷其適用性。 如需示範如何列舉端點裝置並查詢其屬性的程式代碼範例,請參閱 裝置屬性。
選取適當的裝置之後,用戶端可以呼叫 IMMDevice::Activate 方法來啟用 WASAPI、DeviceTopology API 和 EndpointVolume API 中的裝置特定介面。
相關主題