Partager via


Méthode IPart ::RegisterControlChangeCallback (devicetopology.h)

La méthode RegisterControlChangeCallback inscrit l’interface IControlChangeNotify, que le client implémente pour recevoir des notifications de status modifications apportées à cette partie.

Syntaxe

HRESULT RegisterControlChangeCallback(
  [in] REFGUID              riid,
  [in] IControlChangeNotify *pNotify
);

Paramètres

[in] riid

Interface de contrôle spécifique à la fonction qui doit être surveillée pour les modifications de contrôle. Pour plus d'informations, consultez la section Notes.

[in] pNotify

Pointeur vers l’interface IControlChangeNotify du client. Si la méthode réussit, elle appelle la méthode AddRef sur l’interface IControlChangeNotify 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_INVALIDARG
Le paramètre riid n’est pas un identificateur d’interface de contrôle valide.
E_POINTER
Le pointeur pNotify a la valeur NULL.

Remarques

Définissez le paramètre riid sur l’une des valeurs GUID suivantes :

  • IID_IAudioAutoGainControl
  • IID_IAudioBass
  • IID_IAudioChannelConfig
  • IID_IAudioInputSelector
  • IID_IAudioLoudness
  • IID_IAudioMidrange
  • IID_IAudioMute
  • IID_IAudioOutputSelector
  • IID_IAudioPeakMeter
  • IID_IAudioTreble
  • IID_IAudioVolumeLevel
  • IID_IDeviceSpecificProperty
  • IID_IKsFormatSupport
  • IID_IKsJackDescription
Pour obtenir l’ID d’interface de l’interface de contrôle spécifique à une fonction pour un composant, appelez la méthode IControlInterface ::GetIID du composant. Pour obtenir l’ID d’interface d’un type d’interface de contrôle spécifique à une fonction, utilisez l’opérateur __uuidof . Par exemple, l’ID d’interface de IAudioAutoGainControl est défini comme suit :

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

Pour plus d’informations sur l’opérateur __uuidof , consultez la documentation du Kit de développement logiciel (SDK) Windows.

Avant que le client publie sa référence finale à l’interface IControlChangeNotify , il doit appeler la méthode IPart ::UnregisterControlChangeCallback pour annuler l’inscription de l’interface. Sinon, l’application fuit les ressources détenues par les objets IControlChangeNotify et IPart . Notez que RegisterControlChangeCallback appelle la méthode IControlChangeNotify ::AddRef du client et UnregisterControlChangeCallback appelle la méthode IControlChangeNotify ::Release . Si le client se trompe en libérant sa référence à l’interface IControlChangeNotify avant d’appeler UnregisterControlChangeCallback, l’objet IPart ne libère jamais sa référence à l’interface IControlChangeNotify . Par exemple, une implémentation IControlChangeNotify mal conçue peut appeler UnregisterControlChangeCallback à partir du destructeur de l’objet IControlChangeNotify . Dans ce cas, le client n’appelle pas UnregisterControlChangeCallback tant que l’objet IPart ne libère pas sa référence à l’interface IControlChangeNotify , et l’objet IPart ne libère pas sa référence à l’interface IControlChangeNotify tant que le client n’appelle pas UnregisterControlChangeCallback. 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.

Configuration requise

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

Voir aussi

IControlChangeNotify, interface

IControlInterface ::GetIID

IPart Interface

IPart ::UnregisterControlChangeCallback