Interfaz IAudioEndpointVolumeCallback (endpointvolume.h)

La interfaz IAudioEndpointVolumeCallback proporciona notificaciones de los cambios en el nivel de volumen y el estado de silenciación de un dispositivo de punto de conexión de audio. A diferencia de las otras interfaces de esta sección, implementadas por el componente del sistema WASAPI, un cliente de API EndpointVolume implementa la interfaz IAudioEndpointVolumeCallback . Para recibir notificaciones de eventos, el cliente pasa un puntero a su interfaz IAudioEndpointVolumeCallback al método IAudioEndpointVolume::RegisterControlChangeNotify .

Después de registrar su interfaz IAudioEndpointVolumeCallback , el cliente recibe notificaciones de eventos en forma de devoluciones de llamada a través del método OnNotify en la interfaz. Estas notificaciones de eventos se producen cuando uno de los métodos siguientes provoca un cambio en el nivel de volumen o el estado de silenciación de un dispositivo de punto de conexión:

Si un dispositivo de punto de conexión de audio implementa controles de volumen de hardware y silenciación, la interfaz IAudioEndpointVolume usa los controles de hardware para administrar el volumen del dispositivo. De lo contrario, la interfaz IAudioEndpointVolume implementa controles de volumen y silenciación en software, de forma transparente para el cliente.

Si un dispositivo tiene controles de volumen de hardware y silenciación, los cambios realizados en la configuración de volumen y silenciado a través de los métodos de la lista anterior afectan al volumen del dispositivo en modo compartido y modo exclusivo. Si un dispositivo carece de volumen de hardware y controles silenciados, los cambios realizados en el volumen de software y silenciar los controles a través de estos métodos afectan al volumen del dispositivo en modo compartido, pero no en modo exclusivo. En modo exclusivo, el cliente y el dispositivo intercambian datos de audio directamente, pasando los controles de software. Sin embargo, los cambios realizados en los controles de software a través de estos métodos generan notificaciones de eventos independientemente de si el dispositivo está funcionando en modo compartido o en modo exclusivo. Los cambios realizados en el volumen de software y silenciar controles mientras el dispositivo funciona en modo exclusivo surten efecto cuando el dispositivo cambia al modo compartido.

Para determinar si un dispositivo tiene controles de volumen y silenciación de hardware, llame al método IAudioEndpointVolume::QueryHardwareSupport .

Al implementar la interfaz IAudioEndpointVolumeCallback , el cliente debe observar estas reglas para evitar interbloqueos:

  • Los métodos de la interfaz deben ser sin bloqueo. El cliente nunca debe esperar en un objeto de sincronización durante una devolución de llamada de evento.
  • El cliente nunca debe llamar al método IAudioEndpointVolume::UnregisterControlChangeNotify durante una devolución de llamada de evento.
  • El cliente nunca debe liberar la referencia final en un objeto de API EndpointVolume durante una devolución de llamada de evento.
Para obtener un ejemplo de código que implementa la interfaz IAudioEndpointVolumeCallback , consulte Controles de volumen de puntos de conexión.

Herencia

La interfaz IAudioEndpointVolumeCallback hereda de la interfaz IUnknown . IAudioEndpointVolumeCallback también tiene estos tipos de miembros:

Métodos

La interfaz IAudioEndpointVolumeCallback tiene estos métodos.

 
IAudioEndpointVolumeCallback::OnNotify

El método OnNotify notifica al cliente que ha cambiado el nivel de volumen o el estado de silenciación del dispositivo de punto de conexión de audio.

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

Interfaces de audio principales

EndpointVolume API

IAudioEndpointVolume::RegisterControlChangeNotify

IAudioEndpointVolume::UnregisterControlChangeNotify