Método IAudioEndpointVolume::GetVolumeRange (endpointvolume.h)

O método GetVolumeRange obtém o intervalo de volume, em decibéis, do fluxo de áudio que entra ou sai do dispositivo de ponto de extremidade de áudio.

Sintaxe

HRESULT GetVolumeRange(
  [out] float *pflVolumeMindB,
  [out] float *pflVolumeMaxdB,
  [out] float *pflVolumeIncrementdB
);

Parâmetros

[out] pflVolumeMindB

Ponteiro para o nível mínimo de volume. Esse parâmetro aponta para uma variável float na qual o método grava o nível mínimo de volume em decibéis. Esse valor permanece constante durante o tempo de vida da instância da interface IAudioEndpointVolume .

[out] pflVolumeMaxdB

Ponteiro para o nível máximo de volume. Esse parâmetro aponta para uma variável float na qual o método grava o nível máximo de volume em decibéis. Esse valor permanece constante durante o tempo de vida da instância da interface IAudioEndpointVolume .

[out] pflVolumeIncrementdB

Ponteiro para o incremento de volume. Esse parâmetro aponta para uma variável float na qual o método grava o incremento de volume em decibéis. Esse incremento permanece constante durante o tempo de vida da instância da interface IAudioEndpointVolume .

Valor retornado

Se o método for bem-sucedido, retornará S_OK. Se falhar, os códigos de retorno possíveis incluem, mas não se limitam a, os valores mostrados na tabela a seguir.

Código de retorno Descrição
E_POINTER
O parâmetro pfLevelMinDB, pfLevelMaxDB ou pfVolumeIncrementDB é NULL.

Comentários

O intervalo de volumes de vmin = *pfLevelMinDB a vmax = *pfLevelMaxDB é dividido em n intervalos uniformes de tamanho vinc = *pfVolumeIncrementDB, em que

n = (vmax – vmin) / vinc.

Os valores vmin, vmax e vinc são medidos em decibéis. O cliente pode definir o nível de volume como um dos valores discretos n + 1 no intervalo de vmin a vmax.

Os métodos IAudioEndpointVolume::SetChannelVolumeLevel e IAudioEndpointVolume::SetMasterVolumeLevel aceitam apenas níveis de volume no intervalo de vmin a vmax. Se o chamador especificar um nível de volume fora desse intervalo, o método falhará e retornará E_INVALIDARG. Se o chamador especificar um nível de volume entre duas etapas no intervalo de volumes, o método definirá o nível de volume do ponto de extremidade como a etapa mais próxima do nível de volume solicitado e retornará S_OK. No entanto, uma chamada subsequente para IAudioEndpointVolume::GetChannelVolumeLevel ou IAudioEndpointVolume::GetMasterVolumeLevel recupera o nível de volume solicitado pela chamada anterior para SetChannelVolumeLevel ou SetMasterVolumeLevel, não o valor da etapa.

Se o controle de volume for implementado no hardware, GetVolumeRange descreverá o intervalo e a granularidade das configurações de volume de hardware. Por outro lado, as etapas relatadas pelo método IEndpointVolume::GetVolumeStepInfo correspondem a pontos em uma curva afilada de áudio calculada em software pelos métodos IEndpointVolume::VolumeStepDown e IEndpointVolume::VolumeStepUp . Primeiro, qualquer método calcula o nível de volume idealizado que corresponde ao próximo ponto na curva. Em seguida, o método seleciona a configuração de volume de hardware que é a melhor aproximação para o nível idealizado. Para obter mais informações sobre curvas afilados em áudio, consulte Controles de volume em fita de áudio.

Requisitos

   
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho endpointvolume.h

Confira também

IAudioEndpointVolume Interface

IAudioEndpointVolume::GetChannelVolumeLevel

IAudioEndpointVolume::GetMasterVolumeLevel

IAudioEndpointVolume::SetChannelVolumeLevel

IAudioEndpointVolume::SetMasterVolumeLevel

IEndpointVolume::GetVolumeStepInfo

IEndpointVolume::VolumeStepDown

IEndpointVolume::VolumeStepUp