Interfaz IMMNotificationClient (mmdeviceapi.h)
La interfaz IMMNotificationClient proporciona notificaciones cuando se agrega o quita un dispositivo de punto de conexión de audio , cuando cambia el estado o las propiedades de un dispositivo de punto de conexión, o cuando hay un cambio en el rol predeterminado asignado a un dispositivo de punto de conexión. A diferencia de las otras interfaces de esta sección, implementadas por el componente del sistema de API MMDevice, un cliente de API MMDevice implementa la interfaz IMMNotificationClient . Para recibir notificaciones, el cliente pasa un puntero a su instancia de interfaz IMMNotificationClient como parámetro al método IMMDeviceEnumerator::RegisterEndpointNotificationCallback .
Después de registrar su interfaz IMMNotificationClient , el cliente recibe notificaciones de eventos en forma de devoluciones de llamada a través de los métodos de la interfaz .
Cada método de la interfaz IMMNotificationClient recibe, como uno de sus parámetros de entrada, una cadena de identificador de punto de conexión que identifica el dispositivo de punto de conexión de audio que es el sujeto de la notificación. La cadena identifica de forma única el dispositivo con respecto a todos los demás dispositivos de punto de conexión de audio del sistema. Los métodos de la implementación de la interfaz IMMNotificationClient deben tratar esta cadena como opaca. Es decir, ninguno de los métodos debe intentar analizar el contenido de la cadena para obtener información sobre el dispositivo. El motivo es que el formato de cadena no está definido y podría cambiar de una implementación del módulo del sistema de API MMDevice al siguiente.
Un cliente puede usar la cadena de identificador de punto de conexión que recibe como parámetro de entrada en una llamada a un método IMMNotificationClient de dos maneras:
- El cliente puede crear una instancia del dispositivo que identifica la cadena de identificador de punto de conexión. El cliente lo hace llamando al método IMMDeviceEnumerator::GetDevice y proporcionando la cadena de identificador de punto de conexión como parámetro de entrada.
- El cliente puede comparar la cadena de identificador de punto de conexión con la cadena de identificador de punto de conexión de una instancia de dispositivo existente. Para obtener la segunda cadena de identificador de punto de conexión, el cliente llama al método IMMDevice::GetId de la instancia del dispositivo. Si las dos cadenas coinciden, identifican el mismo dispositivo.
- 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.
- Para evitar bloqueos fallidos, el cliente nunca debe llamar a IMMDeviceEnumerator::RegisterEndpointNotificationCallback o IMMDeviceEnumerator::UnregisterEndpointNotificationCallback en su implementación de métodos IMMNotificationClient .
- El cliente nunca debe liberar la referencia final en un objeto de API MMDevice durante una devolución de llamada de evento.
Herencia
La interfaz IMMNotificationClient hereda de la interfaz IUnknown . IMMNotificationClient también tiene estos tipos de miembros:
Métodos
La interfaz IMMNotificationClient tiene estos métodos.
IMMNotificationClient::OnDefaultDeviceChanged El método OnDefaultDeviceChanged notifica al cliente que ha cambiado el dispositivo de punto de conexión de audio predeterminado para un rol de dispositivo determinado. |
IMMNotificationClient::OnDeviceAdded El método OnDeviceAdded indica que se ha agregado un nuevo dispositivo de punto de conexión de audio. |
IMMNotificationClient::OnDeviceRemoved El método OnDeviceRemoved indica que se ha quitado un dispositivo de punto de conexión de audio. |
IMMNotificationClient::OnDeviceStateChanged El método OnDeviceStateChanged indica que el estado de un dispositivo de punto de conexión de audio ha cambiado. |
IMMNotificationClient::OnPropertyValueChanged El método OnPropertyValueChanged indica que el valor de una propiedad que pertenece a un dispositivo de punto de conexión de audio ha cambiado. |
Requisitos
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 | mmdeviceapi.h |
Consulte también
Interfaces de audio principales
IMMDeviceEnumerator::GetDevice
IMMDeviceEnumerator::RegisterEndpointNotificationCallback