Über WASAPI

Mit der Windows-Audiositzungs-API (WASAPI) können Clientanwendungen den Fluss von Audiodaten zwischen der Anwendung und einem Audioendpunktgerät verwalten.

Headerdateien Audioclient.h und Audiopolicy.h definieren die WASAPI-Schnittstellen.

Jeder Audiodatenstrom ist Mitglied einer Audiositzung. Durch die Sitzungsstraktion kann ein WASAPI-Client einen Audiodatenstrom als Mitglied einer Gruppe verwandter Audiostreams identifizieren. Das System kann alle Streams in der Sitzung als einzelne Einheit verwalten.

Die Audio-Engine ist die Audiokomponente im Benutzermodus , über die Anwendungen den Zugriff auf ein Audioendpunktgerät gemeinsam nutzen. Die Audio-Engine transportiert Audiodaten zwischen einem Endpunktpuffer und einem Endpunktgerät. Um einen Audiodatenstrom über ein Renderingendpunktgerät wiederzugeben, schreibt eine Anwendung in regelmäßigen Abständen Audiodaten in einen Renderingendpunktpuffer. Die Audio-Engine mischt die Streams aus den verschiedenen Anwendungen. Um einen Audiodatenstrom von einem Aufnahmeendpunktgerät aufzuzeichnen, liest eine Anwendung in regelmäßigen Abständen Audiodaten aus einem Erfassungsendpunktpuffer.

WASAPI besteht aus mehreren Schnittstellen. Die erste davon ist die IAudioClient-Schnittstelle . Um auf die WASAPI-Schnittstellen zuzugreifen, ruft ein Client zunächst einen Verweis auf die IAudioClient-Schnittstelle eines Audioendpunktgeräts ab, indem er die IMMDevice::Activate-Methode aufruft , wobei parameter iid auf REFIID IID_IAudioClient festgelegt ist. Der Client ruft die IAudioClient::Initialize-Methode auf, um einen Datenstrom auf einem Endpunktgerät zu initialisieren. Nach der Initialisierung eines Datenstroms kann der Client Verweise auf die anderen WASAPI-Schnittstellen abrufen, indem er die IAudioClient::GetService-Methode aufruft.

Viele der Methoden in WASAPI geben den Fehlercode AUDCLNT_E_DEVICE_INVALIDATED zurück, wenn das von einer Clientanwendung verwendete Audioendpunktgerät ungültig wird. Häufig kann die Anwendung nach diesem Fehler wiederhergestellt werden. Weitere Informationen finden Sie unter Wiederherstellen nach einem Invalid-Device Fehler.

WASAPI implementiert die folgenden Schnittstellen.

Schnittstelle Beschreibung
IAudioCaptureClient Ermöglicht es einem Client, Eingabedaten aus einem Erfassungsendpunktpuffer zu lesen.
IAudioClient Ermöglicht einem Client das Erstellen und Initialisieren eines Audiodatenstroms zwischen einer Audioanwendung und der Audio-Engine oder dem Hardwarepuffer eines Audioendpunktgeräts.
IAudioClock Ermöglicht es einem Client, die Datenrate eines Datenstroms und die aktuelle Position im Stream zu überwachen.
IAudioRenderClient Ermöglicht einem Client das Schreiben von Ausgabedaten in einen Renderingendpunktpuffer.
IAudioSessionControl Ermöglicht es einem Client, die Steuerungsparameter für eine Audiositzung zu konfigurieren und Ereignisse in der Sitzung zu überwachen.
IAudioSessionManager Ermöglicht einem Client den Zugriff auf die Sitzungs- und Lautstärkesteuerungen sowohl für prozessübergreifende als auch für prozessspezifische Audiositzungen.
IAudioStreamVolume Ermöglicht es einem Client, die Lautstärkepegel für alle Kanäle in einem Audiostream zu steuern und zu überwachen.
IChannelAudioVolume Ermöglicht es einem Client, die Lautstärken für alle Kanäle in der Audiositzung zu steuern, zu denen der Stream gehört.
ISimpleAudioVolume Ermöglicht es einem Client, den master Lautstärkepegel einer Audiositzung zu steuern.

 

WASAPI-Clients, die eine Benachrichtigung über sitzungsbezogene Ereignisse erfordern, sollten die folgende Schnittstelle implementieren.

Schnittstelle Beschreibung
IAudioSessionEvents Stellt Benachrichtigungen zu sitzungsbezogenen Ereignissen bereit, z. B. Änderungen der Volumeebene, des Anzeigenamens und des Sitzungszustands.

 

Streamverwaltung

Programmierverzeichnis