Udostępnij przez


Wyliczanie urządzeń audio

Pierwszym zadaniem aplikacji audio klienta jest znalezienie odpowiedniego urządzenia audio do użycia. Interfejs API MMDevice umożliwia klientom odnajdywanie urządzeń punktu końcowego audio w systemie i określanie, które urządzenia są odpowiednie do użycia przez aplikację. Ten interfejs API umożliwia klientom pobieranie kolekcji dostępnych urządzeń punktu końcowego i uzyskiwanie możliwości poszczególnych urządzeń. Plik nagłówkowy Mmdeviceapi.h definiuje interfejsy API MMDevice.

Adapter audio może zawierać kilka urządzeń — na przykład urządzenie do odtwarzania dźwięku i urządzenie do nagrywania dźwięku. Są to urządzenia typu adapter, a nie urządzenia końcowe. Jak wspomniano wcześniej, urządzenia adaptera są rejestrowane przez menedżera Plug and Play, w przeciwieństwie do urządzeń końcowych, które są rejestrowane przez menedżera końcowego. Każde urządzenie adaptera zazwyczaj obsługuje jedno lub więcej urządzeń końcowych. Urządzenie punktu końcowego renderowania (na przykład słuchawki) może odbierać strumień danych audio z aplikacji klienckiej, a urządzenie punktu końcowego przechwytywania (na przykład mikrofon) może wysyłać strumień audio do aplikacji klienckiej.

Przed wyliczeniem urządzeń punktu końcowego w systemie klient musi najpierw wywołać funkcję CoCreateInstance systemu Windows, aby utworzyć moduł wyliczający urządzenia. Enumerator urządzeń jest obiektem z interfejsem IMMDeviceEnumerator. Aby uzyskać informacje o CoCreateInstance, zobacz dokumentację zestawu Windows SDK.

Klient wywołuje metodę IMMDeviceEnumerator::EnumAudioEndpoints w celu utworzenia kolekcji obiektów punktu końcowego. Każdy obiekt punktu końcowego reprezentuje urządzenie punktu końcowego audio w systemie. W tym wywołaniu klient określa, czy kolekcja powinna zawierać wszystkie urządzenia renderowania w systemie, wszystkie urządzenia przechwytywania, czy oba te urządzenia.

Kolekcja urządzeń to obiekt z interfejsem IMMDeviceCollection. Każdy element w kolekcji urządzeń jest obiektem punktu końcowego z co najmniej dwoma następującymi interfejsami:

Po pobraniu kolekcji urządzeń punktu końcowego klient może wysyłać zapytania dotyczące właściwości poszczególnych urządzeń w kolekcji w celu określenia ich przydatności do użycia. Aby zapoznać się z przykładem kodu pokazującym sposób wyliczania urządzeń punktu końcowego i wykonywania zapytań dotyczących ich właściwości, zobacz Właściwości urządzenia.

Po wybraniu odpowiedniego urządzenia klient może wywołać metodę IMMDevice::Activate, aby aktywować interfejsy specyficzne dla urządzenia w: WASAPI, API DeviceTopologyoraz API EndpointVolume.

urządzenia końcowe audio