Trabajar con roles de dispositivo

La API MMDevice admite roles de dispositivo. La enumeración ERole define los roles de dispositivo admitidos por la API MMDevice.

Nota

Aunque la API MMDevice admite roles de dispositivo, la interfaz de usuario de Windows Vista no implementa compatibilidad con esta característica.

 

Una aplicación puede usar la API MMDevice para admitir roles de dispositivo a través de los métodos IMMDeviceEnumerator::GetDefaultAudioEndpoint e IMMNotificationClient::OnDefaultDeviceChanged . Sin embargo, la interfaz de usuario de Windows Vista no admite la asignación de roles individuales a distintos dispositivos. En Windows Vista, la interfaz de usuario permite al usuario seleccionar un dispositivo de audio predeterminado para la representación y un dispositivo de audio predeterminado para la captura. Cuando el usuario selecciona un dispositivo de representación o captura predeterminado, el sistema asigna los tres roles de dispositivo (eConsole, eMultimedia y eCommunications) a ese dispositivo. Las aplicaciones no pueden cambiar los roles asignados a los dispositivos de punto de conexión de audio. El sistema operativo solo permite al usuario asignar roles de dispositivo.

Un cliente puede registrarse para recibir una notificación de la API MMDevice cada vez que se produce un cambio en la asignación de roles a dispositivos de punto de conexión de audio. Cuando un rol cambia de un dispositivo a otro, el cliente puede elegir si desea seguir reproduciendo (o grabando) sus secuencias a través del mismo dispositivo o cambiar las secuencias a otro dispositivo. De forma predeterminada, las secuencias continúan reproduciendo (o grabándose) a través del dispositivo original. En Windows Vista, para cambiar las secuencias a otro dispositivo, el cliente debe eliminar las secuencias en el dispositivo original y crear secuencias de reemplazo en el nuevo dispositivo. En Windows 7, el cliente puede escuchar nuevas notificaciones para implementar un conmutador sin problemas sin interrumpir la reproducción o la sesión de captura. Para obtener más información, consulte Enrutamiento de flujos.

Si tiene previsto usar Windows Vista para probar la aplicación, puede configurar un entorno de prueba para comprobar que la aplicación se comporta según lo esperado cuando el usuario puede asignar roles de dispositivo individuales a diferentes dispositivos. Para más información, envíe un correo electrónico a uaa@microsoft.com.

Communication Devices

La interfaz de usuario de Windows 7 tiene la capacidad de agregar dispositivos de comunicaciones. El panel de control Sonido permite al usuario seleccionar un dispositivo de comunicación predeterminado cada uno para representar y capturar la secuencia de audio. De forma predeterminada, cuando un nuevo dispositivo está conectado al equipo, el sistema operativo realiza la detección automática de roles y determina si el dispositivo es adecuado para el rol de eCommunication. Al dirigirse a dispositivos de comunicación, puede desarrollar aplicaciones que usan Core Audio APIs para implementar soluciones de comunicación de teléfono PC. Por ejemplo, una aplicación VoIP podría asignar sus flujos de entrada y salida de voz a los dispositivos de punto de conexión de captura y representación predeterminados con el rol eCommunications. Al igual que cualquier otro flujo, una aplicación de comunicación debe obtener una referencia al punto de conexión del dispositivo de comunicación llamando a IMMDeviceEnumerator::GetDefaultAudioEndpoint. En esta llamada, la aplicación debe especificar eCommunications en el parámetro Role . Las operaciones de flujo WASAPI en una secuencia, abierta en un dispositivo de comunicación, son similares a cualquier otra secuencia de audio. La aplicación de comunicación puede mejorar la experiencia del usuario mediante la implementación de comportamientos como el pato mediante el control de notificaciones desde el punto de conexión del dispositivo. Para obtener más información, consulte Uso de un dispositivo de comunicación.

Detección automática de roles de dispositivo

Considere un escenario en el que un equipo tiene un dispositivo de representación predeterminado, los altavoces y un dispositivo de captura predeterminado, un micrófono. El usuario conecta un casco USB al equipo. Una vez instalados los controladores adecuados, el sistema operativo intenta detectar un rol para asignar al nuevo dispositivo de audio.

En Windows 7, la característica de detección de roles de dispositivo se ha mejorado significativamente para determinar los roles adecuados para dispositivos de audio. Todos los dispositivos de audio contienen un conjunto de opciones de configuración rellenadas por el OEM del dispositivo, lo que ayuda al sistema a decidir cómo usar el dispositivo. Esta configuración incluye información como la ubicación física del conector de audio del tipo de dispositivo, el subtipo jack y las funcionalidades de detección para que el sistema pueda determinar si el dispositivo está conectado. Al recuperar estos valores desde el dispositivo, el sistema operativo determina el rol que se va a asignar al dispositivo. En este escenario, el sistema ha consultado el dispositivo de auriculares USB, ha realizado la detección automática de roles y ha decidido que el dispositivo es más adecuado para ser un dispositivo de comunicación.

Una aplicación también puede obtener información de jack mediante core Audio APIs. Para obtener más información, vea IKsJackDescription e IKsJackDescription2.

Roles de dispositivo