Cadeias de ID de ponto de extremidade

No Windows Vista, o sistema gera cadeias de caracteres de ID de ponto de extremidade para identificar os dispositivos de ponto de extremidade de áudio no sistema. Uma string de ID de ponto de extremidade é uma string de caracteres largos terminada por um nulo. A cadeia de ID de ponto de extremidade para um dispositivo de áudio específico identifica exclusivamente o dispositivo entre todos os dispositivos 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 endpoint, consulte Propriedades do dispositivo.

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

Um cliente pode organizar o recebimento de uma notificação quando o status de qualquer dispositivo de ponto de extremidade de áudio mudar. Para receber notificações, o cliente implementa uma interface IMMNotificationClient e regista essa interface com a API MMDevice. Quando o estado de um dispositivo de ponto de extremidade muda, a API MMDevice chama o método apropriado na interface do cliente EDataFlow. 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 EDataFlow, consulte Device Events.

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

Durante a enumeração do dispositivo DirectSound, o DirectSound fornece a cadeia de caracteres de ID do ponto de extremidade para cada dispositivo que enumera. Para obter mais informações, consulte Eventos de Áudio para Aplicações de Áudio Legadas.

Para obter a cadeia de caracteres de ID do ponto de extremidade para um dispositivo de forma de onda herdado, use a função waveOutMessage ou a função waveInMessage para enviar uma mensagem DRV_QUERYFUNCTIONINSTANCEID para o driver de 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 herdados do Windows.

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 ponto de extremidade 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 da cadeia de caracteres é indefinido e pode mudar de uma implementação do módulo do sistema da API MMDevice para a próxima.

O tempo de vida de uma cadeia de caracteres de ID de ponto de extremidade está vinculado à instalação do dispositivo. A cadeia de caracteres de ID de ponto de extremidade de um dispositivo será alterada se o usuário atualizar o driver de 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 durante as reinicializações do sistema, e a cadeia de caracteres de ID do ponto de extremidade de um dispositivo de áudio USB permanece inalterada se o usuário desconectar o dispositivo e conectá-lo novamente.

Como as atualizações do sistema operativo e dos drivers de áudio podem alterar a cadeia de ID do endpoint para um endpoint físico de áudio, o ID do endpoint não fornece um mecanismo fiável para que uma aplicação se lembre e acompanhe um endpoint áudio entre sessões de utilizador. Por exemplo, uma aplicação de comunicação pode querer memorizar o microfone e as colunas escolhidas pelo utilizador para usar numa chamada. Se a aplicação usar o ID do endpoint para rastrear a preferência do utilizador, então uma atualização do driver de áudio que altere o ID do endpoint do microfone/colunas pode fazer com que a aplicação perca a preferência do utilizador.

A partir de Windows 11, versão 24H2 (build 26100), Windows fornece uma propriedade de PKEY_AudioEndpoint_StableId num endpoint de áudio que, quando disponível, pode ser usada por uma aplicação para rastrear de forma fiável os endpoints de áudio através das atualizações do sistema operativo e dos drivers de áudio. A PKEY_AudioEndpoint_StableId é uma cadeia opaca e sensível a maiúsculas minúsculas que uma aplicação pode guardar e depois usar numa chamada para IMMDeviceEnumerator::GetDevice para recuperar o mesmo endpoint áudio. Para mais informações, consulte PKEY_AudioEndpoint_StableId.

dispositivos de ponto final de áudio