Método IAudioEndpointVolume::RegisterControlChangeNotify (endpointvolume.h)

El método RegisterControlChangeNotify registra la interfaz de devolución de llamada de notificación de un cliente.

Sintaxis

HRESULT RegisterControlChangeNotify(
  [in] IAudioEndpointVolumeCallback *pNotify
);

Parámetros

[in] pNotify

Puntero a la interfaz IAudioEndpointVolumeCallback que el cliente registra para las devoluciones de llamada de notificación. Si el método RegisterControlChangeNotify se realiza correctamente, llama al método AddRef en la interfaz IAudioEndpointVolumeCallback del cliente.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, los posibles códigos de retorno incluyen, pero no están limitados a, los valores que se muestran en la tabla siguiente.

Código devuelto Descripción
E_POINTER
El parámetro pNotify es NULL.

Comentarios

Este método registra una interfaz IAudioEndpointVolumeCallback a la que llamará el sistema cuando cambia el nivel de volumen o el estado de silenciación de un punto de conexión. El llamador implementa la interfaz IAudioEndpointVolumeCallback .

Cuando las notificaciones ya no son necesarias, el cliente puede llamar al método IAudioEndpointVolume::UnregisterControlChangeNotify para finalizar las notificaciones.

Antes de que el cliente libere su referencia final a la interfaz IAudioEndpointVolumeCallback , debe llamar a UnregisterControlChangeNotify para anular el registro de la interfaz. De lo contrario, la aplicación filtra los recursos mantenidos por los objetos IAudioEndpointVolumeCallback e IAudioEndpointVolume . Tenga en cuenta que RegisterControlChangeNotify llama al método IAudioEndpointVolumeCallback::AddRef del cliente y UnregisterControlChangeNotify llama al método IAudioEndpointVolumeCallback::Release . Si el cliente erra liberando su referencia a la interfaz IAudioEndpointVolumeCallback antes de llamar a UnregisterControlChangeNotify, el objeto IAudioEndpointVolume nunca libera su referencia a la interfaz IAudioEndpointVolumeCallback . Por ejemplo, una implementación IAudioEndpointVolumeCallback mal diseñada podría llamar a UnregisterControlChangeNotify desde el destructor para el objeto IAudioEndpointVolumeCallback . En este caso, el cliente no llamará a UnregisterControlChangeNotify hasta que el objeto IAudioEndpointVolume libere su referencia a la interfaz IAudioEndpointVolumeCallback y el objeto IAudioEndpointVolume no liberará su referencia a la interfaz IAudioEndpointVolumeCallback hasta que el cliente llame a UnregisterControlChangeNotify. 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.

Además, el cliente debe llamar a UnregisterControlChangeNotify antes de liberar la referencia final al objeto IAudioEndpointVolume . De lo contrario, el objeto filtra el almacenamiento que asignó para contener la información de registro. Después de registrar una interfaz de notificación, el cliente sigue recibiendo notificaciones solo mientras exista el objeto IAudioEndpointVolume .

Para obtener un ejemplo de código que llama a RegisterControlChangeNotify, consulte Controles de volumen de punto de conexión.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado endpointvolume.h

Consulte también

IAudioEndpointVolume (interfaz)

IAudioEndpointVolume::UnregisterControlChangeNotify

IAudioEndpointVolumeCallback (Interfaz)