EndpointVolume API

A API EndpointVolume permite que clientes especializados controlem e monitorem os níveis de volume de dispositivos de ponto de extremidade de áudio. Um cliente obtém referências às interfaces na API EndpointVolume obtendo a interface IMMDevice de um dispositivo de ponto de extremidade de áudio e chamando o método IMMDevice::Activate.

O arquivo de cabeçalho Endpointvolume.h define as interfaces na API EndpointVolume.

Os aplicativos de áudio que usam a API MMDevice e a WASAPI normalmente usam a interface ISimpleAudioVolume para controlar os níveis de volume por sessão. Apenas dois tipos de aplicativos de áudio exigem o uso da API EndpointVolume. Esses tipos de aplicativo são:

  • Aplicativos que gerenciam os níveis de volume mestre de dispositivos de ponto de extremidade de áudio, semelhante ao programa de controle de volume do Windows, Sndvol.exe.
  • Aplicativos de áudio profissional ("áudio profissional") que exigem acesso em modo exclusivo a dispositivos de ponto de extremidade de áudio.

O uso inadequado da API EndpointVolume pode interferir na política de áudio do Windows e interromper as configurações de volume do sistema do usuário.

Se um dispositivo de ponto de extremidade de áudio implementar controles de volume de hardware e mudo, a API EndpointVolume usará esses controles para gerenciar o volume do dispositivo. Caso contrário, a API EndpointVolume implementará os controles no software, de forma transparente para o cliente.

Se um dispositivo tiver controles de volume de hardware e mudo, as alterações feitas nas configurações de volume e mudo do dispositivo por meio da API EndpointVolume afetarão o nível de volume no modo compartilhado e no modo exclusivo. Se um dispositivo não tiver controles de volume de hardware e mudo, as alterações feitas nos controles de volume de software e mudo por meio da API EndpointVolume afetarão o nível de volume no modo compartilhado, mas não no modo exclusivo. No modo exclusivo, o cliente e o dispositivo trocam dados de áudio diretamente, ignorando os controles do software.

Para aplicativos que devem gerenciar controles de volume e mudo de hardware, a API EndpointVolume oferece duas vantagens potenciais sobre a API DeviceTopology.

Primeiro, vários dispositivos de adaptador de áudio não possuem controles de volume de hardware. Se um dispositivo não tiver um controle de volume de hardware, a interface IAudioEndpointVolume na API EndpointVolume implementará automaticamente um controle de volume de software no fluxo de ou para esse dispositivo. Para um cliente da API EndpointVolume, o resultado é o mesmo se o controle de volume for implementado no hardware pelo dispositivo ou no software pela interface da API EndpointVolume.

Em segundo lugar, mesmo que o dispositivo adaptador implemente controles de volume de hardware, um aplicativo que usa a API DeviceTopology para implementar um algoritmo de topologia transversal pode não conseguir localizar o controle que está procurando. Normalmente, esse aplicativo é projetado para atravessar a topologia de hardware de um determinado dispositivo ou conjunto de dispositivos relacionados. O aplicativo corre o risco de falhar se tentar atravessar a topologia de um dispositivo para o qual não foi especificamente projetado ou testado.

Somente aplicativos especializados que devem acessar funções de hardware diferentes dos controles de volume e mudo exigem o uso da API DeviceTopology. Para aplicativos que exigem controle apenas do nível de volume de um fluxo de modo exclusivo, a API EndpointVolume é mais simples de usar e funciona de forma confiável com uma ampla variedade de dispositivos de hardware de áudio.

Para obter exemplos de código que usam as interfaces na API EndpointVolume, consulte os seguintes tópicos:

Para ver um exemplo que usa a API EndpointVolume, consulte EndpointVolume no SDK do Windows.

A API EndpointVolume implementa as seguintes interfaces.

Interface Descrição
IAudioEndpointVolume Representa os controles de volume no fluxo de áudio de ou para um dispositivo de ponto de extremidade de áudio.
IAudioMeterInformation Representa um medidor de pico no fluxo de áudio de ou para um dispositivo de ponto de extremidade de áudio.

 

Além disso, os clientes da API EndpointVolume que exigem notificação de alterações de volume e silenciamento em dispositivos de ponto de extremidade de áudio devem implementar a interface a seguir.

Interface Descrição
IAudioEndpointVolumeCallback Fornece notificações quando o nível de volume ou o estado de silenciamento de um dispositivo de ponto de extremidade de áudio é alterado.

 

Controles de volume

IMMDevice Interface

IMMDevice::Ativar

ISimpleAudioVolume

Referência de programação