IAudioEndpointVolumeCallback-Schnittstelle (endpointvolume.h)

Die IAudioEndpointVolumeCallback-Schnittstelle stellt Benachrichtigungen über Änderungen des Lautstärke- und Stummschaltzustands eines Audioendpunktgeräts bereit. Im Gegensatz zu den anderen Schnittstellen in diesem Abschnitt, die von der WASAPI-Systemkomponente implementiert werden, implementiert ein EndpointVolume-API-Client die IAudioEndpointVolumeCallback-Schnittstelle . Zum Empfangen von Ereignisbenachrichtigungen übergibt der Client einen Zeiger an die IAudioEndpointVolumeCallback-Schnittstelle an die IAudioEndpointVolume::RegisterControlChangeNotify-Methode .

Nach der Registrierung seiner IAudioEndpointVolumeCallback-Schnittstelle empfängt der Client Ereignisbenachrichtigungen in Form von Rückrufen über die OnNotify-Methode in der Schnittstelle. Diese Ereignisbenachrichtigungen treten auf, wenn eine der folgenden Methoden eine Änderung der Volumeebene oder des Stummschaltzustands eines Endpunktgeräts verursacht:

Wenn ein Audioendpunktgerät Hardwarevolume- und Stummschaltungssteuerelemente implementiert, verwendet die IAudioEndpointVolume-Schnittstelle die Hardwaresteuerelemente , um die Lautstärke des Geräts zu verwalten. Andernfalls implementiert die IAudioEndpointVolume-Schnittstelle Volume- und Stummschaltungssteuerelemente in softwaretransparent für den Client.

Wenn ein Gerät über Hardwarevolume- und Stummschaltungssteuerungen verfügt, wirken sich Änderungen an den Volume- und Stummschaltungseinstellungen über die Methoden in der vorherigen Liste auf das Volume des Geräts im freigegebenen Modus und im exklusiven Modus aus. Wenn einem Gerät das Hardwarevolume- und Stummschaltungssteuerelement fehlt, wirken sich Änderungen, die über diese Methoden am Softwarevolume und stummschalten vorgenommen werden, auf das Volume des Geräts im freigegebenen Modus, aber nicht im exklusiven Modus. Im exklusiven Modus tauschen der Client und das Gerät Audiodaten direkt aus, wobei die Softwaresteuerelemente umgangen werden. Änderungen, die über diese Methoden an den Softwaresteuerelementen vorgenommen werden, generieren jedoch Ereignisbenachrichtigungen, unabhängig davon, ob das Gerät im freigegebenen Modus oder im exklusiven Modus ausgeführt wird. Änderungen am Softwarevolume- und Stummschaltungssteuerelement, während das Gerät im exklusiven Modus arbeitet, werden wirksam, wenn das Gerät in den freigegebenen Modus wechselt.

Um zu bestimmen, ob ein Gerät über Hardwarevolume- und Stummschaltungssteuerelemente verfügt, rufen Sie die IAudioEndpointVolume::QueryHardwareSupport-Methode auf.

Beim Implementieren der IAudioEndpointVolumeCallback-Schnittstelle sollte der Client die folgenden Regeln beachten, um Deadlocks zu vermeiden:

  • Die Methoden in der Schnittstelle müssen nicht blockierend sein. Der Client sollte während eines Ereignisrückrufs niemals auf ein Synchronisierungsobjekt warten.
  • Der Client sollte die IAudioEndpointVolume::UnregisterControlChangeNotify-Methode während eines Ereignisrückrufs niemals aufrufen.
  • Der Client sollte während eines Ereignisrückrufs niemals den endgültigen Verweis auf ein EndpointVolume-API-Objekt freigeben.
Ein Codebeispiel, das die IAudioEndpointVolumeCallback-Schnittstelle implementiert, finden Sie unter Endpunktvolumecallback-Steuerelemente.

Vererbung

Die IAudioEndpointVolumeCallback-Schnittstelle erbt von der IUnknown-Schnittstelle . IAudioEndpointVolumeCallback verfügt auch über folgende Arten von Membern:

Methoden

Die IAudioEndpointVolumeCallback-Schnittstelle verfügt über diese Methoden.

 
IAudioEndpointVolumeCallback::OnNotify

Die OnNotify-Methode benachrichtigt den Client darüber, dass sich die Volumeebene oder der Stummschaltungszustand des Audioendpunktgeräts geändert hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile endpointvolume.h

Weitere Informationen

Kern-Audioschnittstellen

EndpointVolume-API

IAudioEndpointVolume::RegisterControlChangeNotify

IAudioEndpointVolume::UnregisterControlChangeNotify