EndpointVolume-API

Mit der EndpointVolume-API können spezialisierte Clients die Lautstärkeebenen von Audioendpunktgeräten steuern und überwachen. Ein Client ruft Verweise auf die Schnittstellen in der EndpointVolume-API ab, indem er die IMMDevice-Schnittstelle eines Audioendpunktgeräts erhält und die IMMDevice::Activate-Methode aufruft.

Die Headerdatei Endpointvolume.h definiert die Schnittstellen in der EndpointVolume-API.

Audioanwendungen, die die MMDevice-API und WASAPI verwenden, verwenden in der Regel die ISimpleAudioVolume-Schnittstelle, um die Lautstärkeebenen pro Sitzung zu steuern. Nur zwei Arten von Audioanwendungen erfordern die Verwendung der EndpointVolume-API. Diese Anwendungstypen sind:

  • Anwendungen, die die Master-Volumeebenen von Audioendpunktgeräten verwalten, ähnlich wie Windows Volumesteuerungsprogramm, Sndvol.exe.
  • Professional Audioanwendungen ("Pro Audio"), die exklusiven Moduszugriff auf Audioendpunktgeräte erfordern.

Eine ungeeignete Verwendung der EndpointVolume-API kann Windows Audiorichtlinie beeinträchtigen und die Systemvolumeeinstellungen des Benutzers beeinträchtigen.

Wenn ein Audioendpunktgerät Hardwarevolume- und Stummschaltungssteuerelemente implementiert, verwendet die EndpointVolume-API diese Steuerelemente, um das Gerätevolume zu verwalten. Andernfalls implementiert die EndpointVolume-API die Steuerelemente in der Software transparent für den Client.

Wenn ein Gerät über Steuerelemente für Hardwarevolume und Stummschaltung verfügt, wirken sich Änderungen am Gerätevolume und stummgeschalteten Einstellungen über die EndpointVolume-API sowohl im modus shared als auch im exklusiven Modus auf die Volumeebene aus. Wenn ein Gerät kein Hardwarevolume und stummgeschaltete Steuerelemente hat, wirken sich Änderungen am Softwarevolume und stummgeschalteten Steuerelementen über die EndpointVolume-API im modus shared, aber nicht im exklusiven Modus auf die Volumeebene aus. Im exklusiven Modus tauschen Client und Gerät Audiodaten direkt aus und umgehen dabei die Softwaresteuerelemente.

Für Anwendungen, die Hardwarevolume und Stummschaltungssteuerelemente verwalten müssen, bietet die EndpointVolume-API zwei potenzielle Vorteile gegenüber der DeviceTopology-API.

Erstens fehlt bei einer Reihe von Audioadaptergeräten die Steuerung des Hardwarevolumens. Wenn auf einem Gerät kein Hardwarevolume-Steuerelement verfügbar ist, implementiert die IAudioEndpointVolume-Schnittstelle in der EndpointVolume-API automatisch ein Softwarevolume-Steuerelement für den Datenstrom auf das bzw. von diesem Gerät. Für einen Client der EndpointVolume-API ist das Ergebnis dasselbe, unabhängig davon, ob die Volumesteuerung auf Hardware vom Gerät oder von der EndpointVolume-API-Schnittstelle in Software implementiert wird.

Zweitens kann eine Anwendung, die die DeviceTopology-API zum Implementieren eines Topologiedurchlaufalgorithmus verwendet, das gesuchte Steuerelement möglicherweise nicht finden, selbst wenn das Adaptergerät Hardware-Volumesteuerelemente implementiert. In der Regel ist eine solche Anwendung so konzipiert, dass sie die Hardwaretopologie eines bestimmten Geräts oder einer Gruppe verwandter Geräte durchläuft. Die Anwendung riskiert einen Fehler, wenn sie versucht, die Topologie eines Geräts zu durchlaufen, für das sie nicht speziell entwickelt oder getestet wurde.

Nur spezielle Anwendungen, die auf andere Hardwarefunktionen als Volume- und Stummschaltungssteuerelemente zugreifen müssen, erfordern die Verwendung der DeviceTopology-API. Für Anwendungen, die nur die Steuerung der Volumeebene eines Streams im exklusiven Modus erfordern, ist die EndpointVolume-API einfacher zu verwenden und funktioniert zuverlässig mit einer größeren Bandbreite von Audiohardwaregeräten.

Codebeispiele, die die Schnittstellen in der EndpointVolume-API verwenden, finden Sie in den folgenden Themen:

Ein Beispiel, in dem die EndpointVolume-API verwendet wird, finden Sie unter EndpointVolume im Windows SDK.

Die EndpointVolume-API implementiert die folgenden Schnittstellen.

Schnittstelle BESCHREIBUNG
IAudioEndpointVolume Stellt die Volumesteuerelemente für den Audiodatenstrom zu oder von einem Audioendpunktgerät dar.
IAudioMeterInformation Stellt eine Spitzenmessung für den Audiodatenstrom zu oder von einem Audioendpunktgerät dar.

Darüber hinaus sollten Clients der EndpointVolume-API, die eine Benachrichtigung über Lautstärke und mutierende Änderungen auf Audioendpunktgeräten erfordern, die folgende Schnittstelle implementieren.

Schnittstelle BESCHREIBUNG
IAudioEndpointVolumeCallback Stellt Benachrichtigungen zur Auswahl, wenn sich die Lautstärke oder der Veränderungszustand eines Audioendpunktgeräts ändert.

Lautstärkeregler

IMMDevice-Schnittstelle

IMMDevice::Activate

ISimpleAudioVolume

Programmierverzeichnis