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

El método RegisterAudioSessionNotification registra al cliente para recibir notificaciones de eventos de sesión, incluidos los cambios en el estado de la secuencia.

Sintaxis

HRESULT RegisterAudioSessionNotification(
  [in] IAudioSessionEvents *NewNotifications
);

Parámetros

[in] NewNotifications

Puntero a una interfaz IAudioSessionEvents implementada por el cliente. Si el método se realiza correctamente, llama al método AddRef en la interfaz IAudioSessionEvents 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 NewNotifications es NULL.
AUDCLNT_E_DEVICE_INVALIDATED
El dispositivo de punto de conexión de audio se ha desconectado o el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado o no están disponibles para su uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
El servicio de audio de Windows no se está ejecutando.

Comentarios

Este método pasa una interfaz IAudioSessionEvents implementada por el cliente al administrador de sesiones. Después de una llamada correcta a este método, el administrador de sesiones llama a los métodos de la interfaz IAudioSessionEvents para notificar al cliente de varios eventos de sesión. A través de estos métodos, el cliente recibe notificaciones de los siguientes eventos relacionados con la sesión:

  • Cambios en el nombre para mostrar
  • Cambios en el nivel de volumen
  • Cambios de estado de sesión (inactivos a activos o activos a inactivos)
  • Cambios de parámetros de agrupación
  • Desconexión del cliente de la sesión (causado por el usuario al quitar el dispositivo de punto de conexión de audio, apagar el administrador de sesiones o cambiar el formato de secuencia)
Cuando las notificaciones ya no son necesarias, el cliente puede llamar al método IAudioSessionControl::UnregisterAudioSessionNotification para finalizar las notificaciones.

Antes de que el cliente libere su referencia final a la interfaz IAudioSessionEvents , debe llamar a UnregisterAudioSessionNotification para anular el registro de la interfaz. De lo contrario, la aplicación filtra los recursos mantenidos por los objetos IAudioSessionEvents e IAudioSessionControl . Tenga en cuenta que RegisterAudioSessionNotification llama al método IAudioSessionEvents::AddRef del cliente y UnregisterAudioSessionNotification llama al método IAudioSessionEvents::Release . Si el cliente erra liberando su referencia a la interfaz IAudioSessionEvents antes de llamar a UnregisterAudioSessionNotification, el administrador de sesiones nunca libera su referencia a la interfaz IAudioSessionEvents . Por ejemplo, una implementación de IAudioSessionEvents mal diseñada podría llamar a UnregisterAudioSessionNotification desde el destructor para el objeto IAudioSessionEvents . En este caso, el cliente no llamará a UnregisterAudioSessionNotification hasta que el administrador de sesiones libere su referencia a la interfaz IAudioSessionEvents y el administrador de sesiones no liberará su referencia a la interfaz IAudioSessionEvents hasta que el cliente llame a UnregisterAudioSessionNotification. 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 UnregisterAudioSessionNotification antes de liberar todas sus referencias a los objetos IAudioSessionControl e IAudioSessionManager . A menos que el cliente conserve una referencia a al menos uno de estos dos objetos, el administrador de sesiones 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 siempre y cuando exista al menos uno de estos dos objetos.

Para obtener un ejemplo de código que llama al método RegisterAudioSessionNotification , vea Eventos de audio para aplicaciones de audio heredadas.

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

Consulte también

IAudioSessionControl (interfaz)

IAudioSessionControl::UnregisterAudioSessionNotification

Interfaz IAudioSessionEvents

IAudioSessionManager