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 |
---|---|
|
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