EndpointVolume-API

Die EndpointVolume-API ermöglicht es spezialisierten Clients, die Lautstärken von Audioendpunktgeräten zu steuern und zu überwachen. Ein Client ruft Verweise auf die Schnittstellen in der EndpointVolume-API ab, indem er die IMMDevice-Schnittstelle eines Audioendpunktgeräts abruft 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ärke auf Sitzungsbasis zu steuern. Nur zwei Arten von Audioanwendungen erfordern die Verwendung der EndpointVolume-API. Diese Anwendungstypen sind:

  • Anwendungen, die die master Lautstärkepegel von Audioendpunkten ähnlich dem Windows-Lautstärkesteuerungsprogramm verwalten, Sndvol.exe.
  • Professionelle Audioanwendungen ("Pro-Audio"), die Zugriff im exklusiven Modus auf Audioendpunktgeräte erfordern.

Unangemessene Verwendung der EndpointVolume-API kann die Windows-Audiorichtlinie beeinträchtigen und die Systemlautstärkeeinstellungen des Benutzers stören.

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 softwaretransparent für den Client.

Wenn ein Gerät über Hardwarevolume- und Stummschaltungssteuerungen verfügt, wirken sich Änderungen am Volume des Geräts und die Stummschaltungseinstellungen über die EndpointVolume-API sowohl im freigegebenen Modus als auch im exklusiven Modus auf die Volumeebene aus. Wenn auf einem Gerät keine Hardwarevolume- und Stummschaltungssteuerelemente vorhanden sind, wirken sich Änderungen, die über die EndpointVolume-API am Softwarevolume vorgenommen werden, auf die Volumeebene im freigegebenen Modus aus, jedoch nicht im exklusiven Modus. Im exklusiven Modus tauschen der Client und das Gerät Audiodaten direkt aus, wobei die Softwaresteuerelemente umgangen werden.

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

Erstens gibt es bei einigen Audioadaptergeräten keine Hardware-Lautstärkeregelung. Wenn auf einem Gerät keine Hardwarelautstärkeregelung vorhanden ist, implementiert die IAudioEndpointVolume-Schnittstelle in der EndpointVolume-API automatisch eine Software-Lautstärkesteuerung für den Datenstrom zu oder von diesem Gerät. Für einen Client der EndpointVolume-API ist das Ergebnis identisch, unabhängig davon, ob die Volumesteuerung in Hardware durch das Gerät oder in Software durch die EndpointVolume-API-Schnittstelle implementiert wird.

Zweitens: Selbst wenn das Adaptergerät Hardwarevolumesteuerungen implementiert, kann eine Anwendung, die die DeviceTopology-API zum Implementieren eines Topologiedurchlaufalgorithmus verwendet, das gesuchte Steuerelement möglicherweise nicht finden. 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. Bei der Anwendung besteht das Risiko eines Fehlers, wenn versucht wird, die Topologie eines Geräts zu durchlaufen, für das sie nicht speziell entworfen 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 Lautstärke eines Datenstroms im exklusiven Modus steuern müssen, ist die EndpointVolume-API einfacher zu verwenden und funktioniert zuverlässig mit einer größeren Palette von Audiohardwaregeräten.

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

Ein Beispiel, das die EndpointVolume-API verwendet, finden Sie unter EndpointVolume im Windows SDK.

Die EndpointVolume-API implementiert die folgenden Schnittstellen.

Schnittstelle BESCHREIBUNG
IAudioEndpointVolume Stellt die Lautstärkeregler für den Audiodatenstrom an oder von einem Audioendpunktgerät dar.
IAudioMeterInformation Stellt einen Spitzenzähler für den Audiodatenstrom an oder von einem Audioendpunktgerät dar.

 

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

Schnittstelle BESCHREIBUNG
IAudioEndpointVolumeCallback Stellt Benachrichtigungen bereit, wenn sich die Lautstärke oder der Stummschaltungszustand eines Audioendpunktgeräts ändert.

 

Lautstärkeregler

IMMDevice-Schnittstelle

IMMDevice::Activate

ISimpleAudioVolume

Programmierverzeichnis