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

El método RegisterControlChangeCallback registra la interfaz IControlChangeNotify , que el cliente implementa para recibir notificaciones de cambios de estado en esta parte.

Sintaxis

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

Parámetros

[in] riid

Interfaz de control específica de la función que se va a supervisar para comprobar los cambios de control. Para obtener más información, vea la sección Comentarios.

[in] pNotify

Puntero a la interfaz IControlChangeNotify del cliente. Si el método se realiza correctamente, llama al método AddRef en la interfaz IControlChangeNotify del cliente.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, los códigos de retorno posibles incluyen, entre otros, los valores que se muestran en la tabla siguiente.

Código devuelto Descripción
E_INVALIDARG
El parámetro riid no es un identificador de interfaz de control válido.
E_POINTER
El puntero pNotify es NULL.

Comentarios

Establezca el parámetro riid en uno de los siguientes valores GUID:

  • 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
Para obtener el identificador de interfaz de la interfaz de control específica de la función para una parte, llame al método IControlInterface::GetIID de la parte. Para obtener el identificador de interfaz de un tipo de interfaz de control específico de función, use el operador __uuidof . Por ejemplo, el identificador de interfaz de IAudioAutoGainControl se define de la siguiente manera:

const IID IID_IAudioAutoGainControl  __uuidof(IAudioAutoGainControl)

Para obtener más información sobre el operador __uuidof , consulte la documentación de Windows SDK.

Antes de que el cliente libere su referencia final a la interfaz IControlChangeNotify , debe llamar al método IPart::UnregisterControlChangeCallback para anular el registro de la interfaz. De lo contrario, la aplicación filtra los recursos contenidos en los objetos IControlChangeNotify e IPart . Tenga en cuenta que RegisterControlChangeCallback llama al método IControlChangeNotify::AddRef del cliente y UnregisterControlChangeCallback llama al método IControlChangeNotify::Release . Si el cliente erra liberando su referencia a la interfaz IControlChangeNotify antes de llamar a UnregisterControlChangeCallback, el objeto IPart nunca libera su referencia a la interfaz IControlChangeNotify . Por ejemplo, una implementación de IControlChangeNotify mal diseñada podría llamar a UnregisterControlChangeCallback desde el destructor para el objeto IControlChangeNotify . En este caso, el cliente no llamará a UnregisterControlChangeCallback hasta que el objeto IPart libere su referencia a la interfaz IControlChangeNotify y el objeto IPart no liberará su referencia a la interfaz IControlChangeNotify hasta que el cliente llame a UnregisterControlChangeCallback. Para obtener más información sobre los métodos AddRef y Release , consulte la explicación de la interfaz IUnknown en la documentación de Windows SDK.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado devicetopology.h

Consulte también

IControlChangeNotify (Interfaz)

IControlInterface::GetIID

IPart (Interfaz)

IPart::UnregisterControlChangeCallback