Delen via


Over WASAPI

Met de Windows Audio Session API (WASAPI) kunnen clienttoepassingen de stroom van audiogegevens tussen de toepassing en een audio-eindpuntapparaatbeheren.

Header-bestanden Audioclient.h en Audiopolicy.h definiëren de WASAPI-interfaces.

Elke audiostream is lid van een audiosessie. Via de sessieabstractie kan een WASAPI-client een audiostream identificeren als lid van een groep gerelateerde audiostreams. Het systeem kan alle streams in de sessie als één eenheid beheren.

De audio-engine is het audioonderdeel in de gebruikersmodus waarmee toepassingen toegang tot een audio-eindpuntapparaat delen. De audio-engine transporteert audiogegevens tussen een eindpuntbuffer en een eindpuntapparaat. Als u een audiostream wilt afspelen via een renderingeindpuntapparaat, schrijft een toepassing periodiek audiogegevens naar een renderingeindpuntbuffer. De audio-engine combineert de streams uit de verschillende toepassingen. Om een audiostream op te nemen van een opname-eindpuntapparaat, leest een toepassing periodiek audiogegevens uit een opname-eindpuntbuffer.

WASAPI bestaat uit verschillende interfaces. De eerste hiervan is de IAudioClient interface. Voor toegang tot de WASAPI-interfaces verkrijgt een client eerst een verwijzing naar de IAudioClient interface van een audio-eindpuntapparaat door de IMMDevice::Activate-methode aan te roepen met parameter iid ingesteld op REFIID- IID_IAudioClient. De client roept de IAudioClient::Initialiseer methode om een stream te initialiseren op een eindpuntapparaat. Nadat een stream is geïnitialiseerd, kan de client verwijzingen naar de andere WASAPI-interfaces verkrijgen door de methode IAudioClient::GetService aan te roepen.

Veel van de methoden in WASAPI retourneren foutcode AUDCLNT_E_DEVICE_INVALIDATED als het audio-eindpuntapparaat dat een clienttoepassing gebruikt, ongeldig wordt. Vaak kan de toepassing herstellen na deze fout. Zie Herstellen van een Invalid-Device Foutvoor meer informatie.

WASAPI implementeert de volgende interfaces.

gebruikersinterface Beschrijving
IAudioCaptureClient Hiermee kan een client invoergegevens lezen uit een buffer van een capture-eindpunt.
IAudioClient Hiermee kan een client een audiostream maken en initialiseren tussen een audiotoepassing en de audio-engine of de hardwarebuffer van een audio-eindpuntapparaat.
IAudioClock Hiermee kan een client de gegevenssnelheid van een stream en de huidige positie in de stream bewaken.
IAudioRenderClient Hiermee kan een client uitvoergegevens schrijven naar een buffer voor een renderingeindpunt.
IAudioSessionControl Hiermee kan een client de besturingsparameters voor een audiosessie configureren en gebeurtenissen in de sessie bewaken.
IAudioSessionManager Hiermee kan een client toegang krijgen tot de sessiebesturingselementen en volumebesturingselementen voor zowel proces- als processpecifieke audiosessies.
IAudioStreamVolume Hiermee kan een client de volumeniveaus voor alle kanalen in een audiostream beheren en bewaken.
IChannelAudioVolume Hiermee kan een client de volumeniveaus voor alle kanalen in de audiosessie beheren waartoe de stream behoort.
ISimpleAudioVolume Hiermee kan een client het volumeniveau van een audiosessie regelen.

 

WASAPI-clients waarvoor een melding van sessiegerelateerde gebeurtenissen is vereist, moeten de volgende interface implementeren.

Interface Beschrijving
IAudioSessionEvents Biedt meldingen over sessiegerelateerde gebeurtenissen, zoals wijzigingen op volumeniveau, weergavenaam en sessiestatus.

 

Stream Management-

Programmeringsreferentie