Cadeias de caracteres de ID do ponto de extremidade

Em Windows Vista, o sistema gera cadeias de caracteres de ID do ponto de extremidade para identificar os dispositivos de ponto de extremidade de áudio no sistema. Uma cadeia de caracteres de ID de ponto de extremidade é uma cadeia de caracteres largos terminada em nulo. A sequência de caracteres do ID de ponto de extremidade de um determinado dispositivo de ponto de extremidade de áudio identifica de forma única o dispositivo entre todos os dispositivos de ponto de extremidade de áudio no sistema.

Se um sistema contiver dois ou mais dispositivos de adaptador de áudio idênticos, os dispositivos de ponto de extremidade de áudio correspondentes terão nomes amigáveis idênticos, mas cada dispositivo de ponto de extremidade terá uma cadeia de caracteres de ID de ponto de extremidade exclusiva. Para obter mais informações sobre como obter o nome amigável de um dispositivo de ponto de extremidade, consulte Propriedades do Dispositivo.

Depois de obter uma instância de interface IMMDevice para um dispositivo de ponto de extremidade de áudio, um cliente pode chamar o método IMMDevice::GetId para obter a cadeia de caracteres de ID do ponto de extremidade para o dispositivo. Um cliente pode usar a cadeia de caracteres de ID do ponto de extremidade para criar uma instância do dispositivo de ponto de extremidade de áudio posteriormente ou em um processo diferente chamando o método IMMDeviceEnumerator::GetDevice.

Um cliente pode solicitar o recebimento de uma notificação sempre que houver alteração no status de qualquer dispositivo de extremidade de áudio. Para receber notificações, o cliente implementa uma interface IMMNotificationClient e registra essa interface com a API MMDevice. Quando o status de um dispositivo de ponto de extremidade é alterado, a API MMDevice chama o método apropriado na interface EDataFlow do cliente. Um dos parâmetros de entrada para o método é a cadeia de caracteres de ID do ponto de extremidade que identifica o dispositivo de ponto de extremidade cujo status foi alterado. Para obter mais informações sobre o EDataFlow, consulte Eventos do Dispositivo.

APIs de áudio herdadas, como DirectSound e as funções multimídia Windows, têm suas próprias interfaces para enumerar e identificar dispositivos de áudio. Em Windows Vista, essas interfaces foram estendidas para fornecer as cadeias de caracteres de ID do ponto de extremidade que identificam os dispositivos de ponto de extremidade que estão por trás das abstrações do dispositivo apresentadas pelas APIs.

Durante a enumeração de dispositivos do DirectSound, o DirectSound fornece a string de ID do ponto de extremidade para cada dispositivo enumerado. Para obter mais informações, consulte Eventos de Áudio para Aplicativos de Áudio Legados.

Para obter a cadeia de caracteres do ID de ponto de extremidade de um dispositivo de forma de onda legado, use as funções waveOutMessage ou waveInMessage para enviar a mensagem DRV_QUERYFUNCTIONINSTANCEID ao driver do dispositivo de forma de onda. Para obter um exemplo de código que mostra o uso dessa mensagem, consulte Funções de Dispositivo para Aplicativos Multimídia Windows Herdados.

Para obter mais informações sobre como usar os recursos das APIs de áudio principais para aprimorar aplicativos que usam APIs de áudio herdadas, consulte Interoperabilidade com APIs de áudio herdadas.

Os clientes devem tratar o conteúdo da string de ID do endpoint como opaco. Ou seja, os clientes não devem tentar analisar o conteúdo da cadeia de caracteres para obter informações sobre o dispositivo. O motivo é que o formato de cadeia de caracteres é indefinido e pode mudar de uma implementação do módulo do sistema de API MMDevice para a próxima.

O tempo de vida de uma cadeia de caracteres de ID do ponto de extremidade está vinculado à instalação do dispositivo. A cadeia de caracteres de ID do ponto de extremidade de um dispositivo será alterada se o usuário atualizar o driver do dispositivo ou se o usuário desinstalar o dispositivo e instalá-lo novamente. No entanto, a cadeia de caracteres de ID do ponto de extremidade permanece inalterada entre as reinicializações do sistema e a cadeia de caracteres de ID do ponto de extremidade de um dispositivo de áudio USB permanecerá inalterada se o usuário desligar o dispositivo e conectá-lo novamente.

Como as atualizações do sistema operacional e do driver de áudio podem alterar a sequência de caracteres do ID de um ponto de extremidade de áudio físico, o ID do ponto de extremidade não fornece um mecanismo confiável para que um aplicativo memorize e acompanhe um ponto de extremidade de áudio ao longo das sessões do usuário. Por exemplo, um aplicativo de comunicação pode querer lembrar a escolha de um usuário de microfone e alto-falantes para usar para uma chamada. Se o aplicativo usar a ID do ponto de extremidade para controlar a preferência do usuário, uma atualização do driver de áudio que altera a ID do ponto de extremidade do microfone/alto-falantes poderá fazer com que o aplicativo perca a preferência do usuário.

A partir do Windows 11, versão 24H2 (build 26100), o Windows disponibiliza a propriedade PKEY_AudioEndpoint_StableId para uma extremidade de áudio que, quando disponível, pode ser usada por um aplicativo para rastrear com confiabilidade as extremidades de áudio mesmo após atualizações do sistema operacional e do driver de áudio. O PKEY_AudioEndpoint_StableId é uma sequência de caracteres opaca, sensível a maiúsculas e minúsculas, que um aplicativo pode salvar e, posteriormente, usar em uma chamada para IMMDeviceEnumerator::GetDevice para recuperar a mesma extremidade de áudio. Para obter mais informações, consulte PKEY_AudioEndpoint_StableId.

Dispositivos de saída de áudio