Informationen zu WASAPI
Mit Windows AUDIO Session API (WASAPI) können Clientanwendungen den Fluss von Audiodaten zwischen der Anwendung und einem Audioendpunktgerät verwalten.
Die HEADERdateien Audioclient.h und Audiopolicy.h definieren die WASAPI-Schnittstellen.
Jeder Audiostream ist Ein Mitglied einer Audiositzung. Durch die Sitzungsabstraktion kann ein WASAPI-Client einen Audiostream 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 wieder geben zu können, schreibt eine Anwendung in regelmäßigen Abständen Audiodaten in einen Renderingendpunktpuffer. Die Audio-Engine mischen die Datenströme aus den verschiedenen Anwendungen. Um einen Audiodatenstrom von einem Aufzeichnungsendpunktgerät aufzeichnen zu können, liest eine Anwendung regelmäßig Audiodaten aus einem Aufzeichnungsendpunktpuffer.
WASAPI besteht aus mehreren Schnittstellen. Die erste davon ist die IAudioClient-Schnittstelle. Für den Zugriff auf die WASAPI-Schnittstellen ruft ein Client zunächst einen Verweis auf die IAudioClient-Schnittstelle eines Audioendpunktgeräts ab, indem er die IMMDevice::Activate-Methode aufruft, deren Parameter iid auf REFIID IID _ IAudioClient festgelegt ist. Der Client ruft die IAudioClient::Initialize-Methode auf, um einen Stream auf einem Endpunktgerät zu initialisieren. Nach der Initialisierung eines Streams 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 Audioendpunktgerät, das von einer Clientanwendung _ _ verwendet _ wird, ungültig wird. Häufig kann die Anwendung nach diesem Fehler wiederhergestellt werden. Weitere Informationen finden Sie unter Recovering from an Invalid-Device Error.
WASAPI implementiert die folgenden Schnittstellen.
| Schnittstelle | BESCHREIBUNG |
|---|---|
| IAudioCaptureClient | Ermöglicht einem Client das Lesen von Eingabedaten aus einem Erfassungsendpunktpuffer. |
| IAudioClient | Ermöglicht einem Client das Erstellen und Initialisieren eines Audiostreams zwischen einer Audioanwendung und der Audio-Engine oder dem Hardwarepuffer eines Audioendpunktgeräts. |
| IAudioClock | Ermöglicht es einem Client, die Datenrate eines Streams und die aktuelle Position im Stream zu überwachen. |
| IAudioRenderClient | Ermöglicht einem Client das Schreiben von Ausgabedaten in einen Renderingendpunktpuffer. |
| IAudioSessionControl | Ermöglicht 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 Sitzungssteuerelemente und Volumesteuerelemente für prozessübergreifende und prozessspezifische Audiositzungen. |
| IAudioStreamVolume | Ermöglicht es einem Client, die Lautstärkeebenen für alle Kanäle in einem Audiostream zu steuern und zu überwachen. |
| IChannelAudioVolume | Ermöglicht es einem Client, die Lautstärkeebenen für alle Kanäle in der Audiositzung zu steuern, zu der der Stream gehört. |
| ISimpleAudioVolume | Ermöglicht es einem Client, die Master-Volumeebene 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 wie Änderungen auf Volumeebene, Anzeigename und Sitzungszustand zur Verfügung. |