Share via


Interface IAudioEndpointVolumeCallback (endpointvolume.h)

L’interface IAudioEndpointVolumeCallback fournit des notifications des modifications du niveau de volume et de l’état de désactivation d’un appareil de point de terminaison audio. Contrairement aux autres interfaces de cette section, qui sont implémentées par le composant système WASAPI, un client d’API EndpointVolume implémente l’interface IAudioEndpointVolumeCallback . Pour recevoir des notifications d’événements, le client transmet un pointeur vers son interface IAudioEndpointVolumeCallback vers la méthode IAudioEndpointVolume ::RegisterControlChangeNotify .

Après avoir inscrit son interface IAudioEndpointVolumeCallback , le client reçoit des notifications d’événements sous forme de rappels via la méthode OnNotify dans l’interface. Ces notifications d’événements se produisent quand l’une des méthodes suivantes entraîne une modification du niveau de volume ou de l’état de désactivation d’un appareil de point de terminaison :

Si un périphérique de point de terminaison audio implémente des contrôles de volume matériel et de désactivation, l’interface IAudioEndpointVolume utilise les contrôles matériels pour gérer le volume de l’appareil. Sinon, l’interface IAudioEndpointVolume implémente les contrôles de volume et de désactivation dans le logiciel, de manière transparente pour le client.

Si un appareil dispose de contrôles de volume matériel et de mise en sourdine, les modifications apportées aux paramètres de volume et de désactivation par le biais des méthodes de la liste précédente affectent le volume de l’appareil en mode partagé et en mode exclusif. Si un appareil ne dispose pas de contrôles de volume matériel et de désactivation, les modifications apportées au volume logiciel et aux contrôles de désactivation par le biais de ces méthodes affectent le volume de l’appareil en mode partagé, mais pas en mode exclusif. En mode exclusif, le client et l’appareil échangent directement des données audio, en contournant les contrôles logiciels. Toutefois, les modifications apportées aux contrôles logiciels par le biais de ces méthodes génèrent des notifications d’événements, que l’appareil fonctionne en mode partagé ou en mode exclusif. Les modifications apportées au volume logiciel et aux contrôles de désactivation lorsque l’appareil fonctionne en mode exclusif prennent effet lorsque l’appareil passe en mode partagé.

Pour déterminer si un appareil dispose de contrôles de volume matériel et de désactivation, appelez la méthode IAudioEndpointVolume ::QueryHardwareSupport .

Lors de l’implémentation de l’interface IAudioEndpointVolumeCallback , le client doit respecter ces règles pour éviter les blocages :

  • Les méthodes de l’interface doivent être non bloquantes. Le client ne doit jamais attendre un objet de synchronisation pendant un rappel d’événement.
  • Le client ne doit jamais appeler la méthode IAudioEndpointVolume ::UnregisterControlChangeNotify pendant un rappel d’événement.
  • Le client ne doit jamais publier la référence finale sur un objet API EndpointVolume lors d’un rappel d’événement.
Pour obtenir un exemple de code qui implémente l’interface IAudioEndpointVolumeCallback , consultez Endpoint Volume Controls.

Héritage

L’interface IAudioEndpointVolumeCallback hérite de l’interface IUnknown. IAudioEndpointVolumeCallback possède également les types de membres suivants :

Méthodes

L’interface IAudioEndpointVolumeCallback possède ces méthodes.

 
IAudioEndpointVolumeCallback ::OnNotify

La méthode OnNotify avertit le client que le niveau de volume ou l’état de désactivation du périphérique de point de terminaison audio a changé.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête endpointvolume.h

Voir aussi

Interfaces audio principales

EndpointVolume API

IAudioEndpointVolume ::RegisterControlChangeNotify

IAudioEndpointVolume ::UnregisterControlChangeNotify