Delen via


EndpointVolume-API

Met de EndpointVolume-API kunnen gespecialiseerde clients de volumeniveaus van audio-eindpuntapparatenbeheren en bewaken. Een client verkrijgt verwijzingen naar de interfaces in de EndpointVolume-API door de IMMDevice-interface van een audio-eindpuntapparaat te verkrijgen en de methode IMMDevice::Activate aan te roepen.

Het headerbestand Endpointvolume.h definieert de interfaces in de EndpointVolume-API.

Audiotoepassingen die gebruikmaken van de MMDevice-API en WASAPI- gebruiken doorgaans de interface ISimpleAudioVolume om volumeniveaus per sessie te beheren. Voor slechts twee typen audiotoepassingen is het gebruik van de EndpointVolume-API vereist. Deze toepassingstypen zijn:

  • Toepassingen die de hoofdvolumeniveaus van audio-eindpuntapparaten beheren, vergelijkbaar met het Windows-volumebeheerprogramma, Sndvol.exe.
  • Professionele audiotoepassingen ('pro audio') waarvoor exclusieve toegang tot audio-eindpuntapparaten is vereist.

Ongepast gebruik van de EndpointVolume-API kan het Windows-audiobeleid verstoren en de systeemvolumeinstellingen van de gebruiker verstoren.

Als een audio-eindpuntapparaat hardwarevolume implementeert en besturingselementen dempt, gebruikt de EndpointVolume-API deze besturingselementen om het apparaatvolume te beheren. Anders implementeert de EndpointVolume-API de besturingselementen in software, transparant naar de client.

Als een apparaat hardwarevolume heeft en besturingselementen voor dempen heeft, zijn wijzigingen aangebracht in het volume van het apparaat en dempen via de EndpointVolume-API van invloed op het volumeniveau in zowel de gedeelde modus als de exclusieve modus. Als een apparaat geen hardwarevolume heeft en besturingselementen voor dempen, zijn wijzigingen aangebracht in het softwarevolume en dempen via de EndpointVolume-API van invloed op het volumeniveau in de gedeelde modus, maar niet in de exclusieve modus. In de exclusieve modus wisselen de client en het apparaat rechtstreeks audiogegevens uit, waarbij de softwarebesturingselementen worden overgeslagen.

Voor toepassingen die hardwarevolumes moeten beheren en besturingselementen voor dempen, biedt de EndpointVolume-API twee mogelijke voordelen ten opzichte van de DeviceTopology-API.

Ten eerste ontbreekt een aantal audioadapterapparaten aan hardwarevolumebesturingselementen. Als een apparaat geen hardwarevolumeregeling heeft, implementeert de IAudioEndpointVolume interface in de EndpointVolume-API automatisch een softwarevolumeregeling op de stream naar of van dat apparaat. Voor een client van de EndpointVolume-API is het resultaat hetzelfde of het volumebeheer wordt geïmplementeerd in hardware door het apparaat of in software door de EndpointVolume-API-interface.

Ten tweede, zelfs als het adapterapparaat hardwarevolumebesturingselementen implementeert, kan een toepassing die gebruikmaakt van de DeviceTopology-API voor het implementeren van een topologie-traversal-algoritme mogelijk niet vinden het besturingselement dat het zoekt. Normaal gesproken is een dergelijke toepassing ontworpen om de hardwaretopologie van een bepaald apparaat of een set gerelateerde apparaten te doorlopen. De toepassing loopt een fout als er wordt geprobeerd de topologie van een apparaat te doorlopen waarvoor het niet specifiek is ontworpen of getest.

Alleen gespecialiseerde toepassingen die toegang moeten hebben tot andere hardwarefuncties dan volume- en dempingsbesturingselementen, vereisen het gebruik van de DeviceTopology-API. Voor toepassingen waarvoor alleen het volumeniveau van een exclusieve stroom moet worden beheerd, is de EndpointVolume-API eenvoudiger te gebruiken en werkt deze betrouwbaar met een breder scala aan audiohardwareapparaten.

Zie de volgende onderwerpen voor codevoorbeelden die gebruikmaken van de interfaces in de EndpointVolume-API:

Zie EndpointVolume in de Windows SDK voor een voorbeeld dat gebruikmaakt van de EndpointVolume-API.

De EndpointVolume-API implementeert de volgende interfaces.

Interface Beschrijving
IAudioEndpointVolume Vertegenwoordigt de volumebesturingselementen in de audiostream van of naar een apparaat met een audio-eindpunt.
IAudioMeterInformation- Vertegenwoordigt een piekmeter in de audiostream van of naar een audio-eindpuntapparaat.

 

Bovendien moeten clients van de EndpointVolume-API die melding van volume vereisen en dempingswijzigingen in audio-eindpuntapparaten de volgende interface implementeren.

Interface Beschrijving
IAudioEndpointVolumeCallback- Geeft meldingen wanneer het volumeniveau of dempingsstatus van een audio-eindpuntapparaat wordt gewijzigd.

 

volumebesturingselementen

IMMDevice Interface

IMMDevice::Activate

ISimpleAudioVolume

Programmeringsreferentie