Share via


Méthode IAudioSessionControl ::RegisterAudioSessionNotification (audiopolicy.h)

La méthode RegisterAudioSessionNotification inscrit le client pour recevoir des notifications d’événements de session, y compris les modifications de l’état du flux.

Syntaxe

HRESULT RegisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

Paramètres

[in] NewNotifications

Pointeur vers une interface IAudioSessionEvents implémentée par le client. Si la méthode réussit, elle appelle la méthode AddRef sur l’interface IAudioSessionEvents du client.

Valeur retournée

Si la méthode réussit, retourne S_OK. En cas d’échec, les codes de retour possibles incluent, sans s’y limiter, les valeurs indiquées dans le tableau suivant.

Code de retour Description
E_POINTER
Le paramètre NewNotifications a la valeur NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Le périphérique de point de terminaison audio a été débranché, ou le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés ou autrement indisponibles.
AUDCLNT_E_SERVICE_NOT_RUNNING
Le service audio Windows n’est pas en cours d’exécution.

Remarques

Cette méthode transmet une interface IAudioSessionEvents implémentée par le client au gestionnaire de sessions. Après un appel réussi à cette méthode, le gestionnaire de session appelle les méthodes de l’interface IAudioSessionEvents pour informer le client de différents événements de session. Par le biais de ces méthodes, le client reçoit des notifications des événements liés à la session suivants :

  • Changements de nom d’affichage
  • Changements de niveau de volume
  • Changements d’état de session (inactif à actif ou actif à inactif)
  • Modifications des paramètres de regroupement
  • Déconnexion du client de la session (provoquée par la suppression du périphérique de point de terminaison audio par l’utilisateur, l’arrêt du gestionnaire de session ou la modification du format du flux)
Lorsque les notifications ne sont plus nécessaires, le client peut appeler la méthode IAudioSessionControl ::UnregisterAudioSessionNotification pour arrêter les notifications.

Avant que le client publie sa référence finale à l’interface IAudioSessionEvents , il doit appeler UnregisterAudioSessionNotification pour annuler l’inscription de l’interface. Sinon, l’application fuit les ressources détenues par les objets IAudioSessionEvents et IAudioSessionControl . Notez que RegisterAudioSessionNotification appelle la méthode IAudioSessionEvents ::AddRef du client, et UnregisterAudioSessionNotification appelle la méthode IAudioSessionEvents ::Release . Si le client se trompe en libérant sa référence à l’interface IAudioSessionEvents avant d’appeler UnregisterAudioSessionNotification, le gestionnaire de session ne libère jamais sa référence à l’interface IAudioSessionEvents . Par exemple, une implémentation IAudioSessionEvents mal conçue peut appeler UnregisterAudioSessionNotification à partir du destructeur de l’objet IAudioSessionEvents . Dans ce cas, le client n’appelle pas UnregisterAudioSessionNotification tant que le gestionnaire de session n’a pas publié sa référence à l’interface IAudioSessionEvents , et le gestionnaire de session ne libère pas sa référence à l’interface IAudioSessionEvents tant que le client n’appelle pas UnregisterAudioSessionNotification. Pour plus d’informations sur les méthodes AddRef et Release , consultez la discussion sur l’interface IUnknown dans la documentation du Kit de développement logiciel (SDK) Windows.

En outre, le client doit appeler UnregisterAudioSessionNotification avant de libérer toutes ses références aux objets IAudioSessionControl et IAudioSessionManager . Sauf si le client conserve une référence à au moins un de ces deux objets, le gestionnaire de session fuit le stockage qu’il a alloué pour conserver les informations d’inscription. Après avoir inscrit une interface de notification, le client continue de recevoir des notifications uniquement tant qu’au moins un de ces deux objets existe.

Pour obtenir un exemple de code qui appelle la méthode RegisterAudioSessionNotification , consultez Événements audio pour les applications audio héritées.

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 audiopolicy.h

Voir aussi

IAudioSessionControl, interface

IAudioSessionControl ::UnregisterAudioSessionNotification

IAudioSessionEvents Interface

IAudioSessionManager