Cadenas de identificación del punto de conexión

En Windows Vista, el sistema genera cadenas de identificador de punto de conexión para identificar los dispositivos de punto de conexión de audio en el sistema. Una cadena de identificador de punto de conexión es una cadena de caracteres anchos terminada en NULL. La cadena de identificador de punto de conexión de un dispositivo de punto de conexión de audio determinado identifica de forma única el dispositivo entre todos los dispositivos de punto de conexión de audio del sistema.

Si un sistema contiene dos o más dispositivos de adaptador de audio idénticos, los dispositivos de punto de conexión de audio correspondientes tendrán nombres descriptivos idénticos, pero cada dispositivo de punto de conexión tendrá una cadena de identificador de punto de conexión única. Para obtener más información sobre cómo obtener el nombre descriptivo de un dispositivo de punto de conexión, consulte Propiedades del dispositivo.

Después de obtener una instancia de interfaz IMMDevice para un dispositivo de punto de conexión de audio, un cliente puede llamar al método IMMDevice::GetId para obtener la cadena de identificador de punto de conexión del dispositivo. Un cliente puede usar la cadena de identificador de punto de conexión para crear una instancia del dispositivo de punto de conexión de audio más adelante o en un proceso diferente llamando al método IMMDeviceEnumerator::GetDevice.

Un cliente puede organizarse para recibir una notificación cuando cambie el estado de cualquier dispositivo de punto de conexión de audio. Para recibir notificaciones, el cliente implementa una interfaz IMMNotificationClient y registra esa interfaz con la API MMDevice. Cuando cambia el estado de un dispositivo de punto de conexión, la API MMDevice llama al método adecuado en la interfaz EDataFlow del cliente. Uno de los parámetros de entrada para el método es la cadena de identificador de punto de conexión que identifica el dispositivo de punto de conexión cuyo estado ha cambiado. Para obtener más información sobre EDataFlow, consulte Eventos de dispositivo.

Las API de audio heredadas, como DirectSound y las funciones multimedia de Windows, tienen sus propias interfaces para enumerar e identificar dispositivos de audio. En Windows Vista, estas interfaces se han ampliado para proporcionar las cadenas de identificador de punto de conexión que identifican los dispositivos de punto de conexión que subyacen a las abstracciones de dispositivo presentadas por las API.

Durante la enumeración de dispositivos DirectSound, DirectSound proporciona la cadena de identificador de punto de conexión para cada dispositivo que enumera. Para obtener más información, vea Eventos de audio para aplicaciones de audio heredadas.

Para obtener la cadena de identificador de punto de conexión de un dispositivo de forma de onda heredada, use la función waveOutMessage o waveInMessage para enviar un mensaje de DRV_QUERYFUNCTIONINSTANCEID al controlador de dispositivo de forma de onda. Para obtener un ejemplo de código que muestre el uso de este mensaje, vea Roles de dispositivo para aplicaciones multimedia de Windows heredadas.

Para obtener más información sobre el uso de las funcionalidades de las API de audio principales para mejorar las aplicaciones que usan las API de audio heredadas, consulte Interoperabilidad con las API de audio heredadas.

Los clientes deben tratar el contenido de la cadena de identificador de punto de conexión como opaco. Es decir, los clientes no deben 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.

La duración de una cadena de identificador de punto de conexión está vinculada a la instalación del dispositivo. La cadena de identificador de punto de conexión de un dispositivo cambia si el usuario actualiza el controlador de dispositivo o si el usuario desinstala el dispositivo e lo instala de nuevo. Sin embargo, la cadena de identificador de punto de conexión permanece sin cambios en los reinicios del sistema y la cadena de identificador de punto de conexión de un dispositivo de audio USB permanece sin cambios si el usuario desconecta el dispositivo y lo conecta de nuevo.

Dado que las actualizaciones del sistema operativo y del controlador de audio pueden cambiar la cadena de identificador de punto de conexión para un punto de conexión de audio físico, el identificador de punto de conexión no proporciona un mecanismo confiable para que una aplicación recuerde y realice un seguimiento de un punto de conexión de audio entre sesiones de usuario. Por ejemplo, una aplicación de comunicación puede querer recordar la elección del micrófono y los altavoces de un usuario para usar para una llamada. Si la aplicación usa el identificador de punto de conexión para realizar un seguimiento de la preferencia del usuario, una actualización del controlador de audio que cambia el identificador de punto de conexión del micrófono o los altavoces podría hacer que la aplicación pierda la preferencia del usuario.

A partir de Windows 11, versión 24H2 (compilación 26100), Windows proporciona una propiedad PKEY_AudioEndpoint_StableId en un punto de conexión de audio que, cuando está disponible, puede usar una aplicación para realizar un seguimiento confiable de los puntos de conexión de audio en todo el sistema operativo y las actualizaciones del controlador de audio. El PKEY_AudioEndpoint_StableId es una cadena opaca y con distinción entre mayúsculas y minúsculas que una aplicación puede guardar y, posteriormente, usar en una llamada a IMMDeviceEnumerator::GetDevice para recuperar el mismo punto de conexión de audio. Para obtener más información, consulte PKEY_AudioEndpoint_StableId.

Dispositivos de punto de conexión de audio