Поделиться через


Метод IAudioEndpointVolume::GetVolumeRange (endpointvolume.h)

Метод GetVolumeRange получает диапазон громкости (в децибелах) аудиопотока, который входит в устройство конечной точки звука или покидает его.

Синтаксис

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

Параметры

[out] pflVolumeMindB

Указатель на минимальный уровень громкости. Этот параметр указывает на переменную с плавающей точкой , в которую метод записывает минимальный уровень громкости в децибелах. Это значение остается постоянным в течение всего времени существования экземпляра интерфейса IAudioEndpointVolume .

[out] pflVolumeMaxdB

Указатель на максимальный уровень громкости. Этот параметр указывает на переменную с плавающей точкой , в которую метод записывает максимальный уровень громкости в децибелах. Это значение остается постоянным в течение всего времени существования экземпляра интерфейса IAudioEndpointVolume .

[out] pflVolumeIncrementdB

Указатель на приращение тома. Этот параметр указывает на переменную с плавающей точкой , в которую метод записывает приращение тома в децибелах. Этот приращение остается постоянным в течение всего времени существования экземпляра интерфейса IAudioEndpointVolume .

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.

Код возврата Описание
E_POINTER
Параметр pfLevelMinDB, pfLevelMaxDB или pfVolumeIncrementDB имеет значение NULL.

Комментарии

Диапазон томов от vmin = *pfLevelMinDB до vmax = *pfLevelMaxDB делится на n равномерных интервалов размера vinc = *pfVolumeIncrementDB, где

n = (vmax – vmin) / vinc.

Значения vmin, vmax и vinc измеряются в децибелах. Клиент может задать для уровня громкости одно из n + 1 дискретных значений в диапазоне от vmin до vmax.

Методы IAudioEndpointVolume::SetChannelVolumeLevel и IAudioEndpointVolume::SetMasterVolumeLevel принимают только уровни громкости в диапазоне от vmin до vmax. Если вызывающий объект задает уровень тома за пределами этого диапазона, метод завершается ошибкой и возвращает E_INVALIDARG. Если вызывающий объект задает уровень тома, который находится между двумя шагами в диапазоне томов, метод задает уровень тома конечной точки на шаг, расположенный ближе всего к требуемому уровню тома, и возвращает S_OK. Однако последующий вызов IAudioEndpointVolume::GetChannelVolumeLevel или IAudioEndpointVolume::GetMasterVolumeLevel извлекает уровень тома, запрошенный предыдущим вызовом SetChannelVolumeLevel или SetMasterVolumeLevel, а не значение шага.

Если управление громкостью реализовано на оборудовании, GetVolumeRange описывает диапазон и степень детализации параметров тома оборудования. В отличие от этого, шаги, сообщаемые методом IEndpointVolume::GetVolumeStepInfo , соответствуют точкам звуковой кривой, которые вычисляются в программном обеспечении с помощью методов IEndpointVolume::VolumeStepDown и IEndpointVolume::VolumeStepUp . Любой метод сначала вычисляет идеализированный уровень объема, соответствующий следующей точке кривой. Затем метод выбирает параметр аппаратного тома, который является наилучшим приближением к идеализированному уровню. Дополнительные сведения о кривых с конужением звука см. в разделе Звукоудержимые регуляторы громкости.

Требования

   
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header endpointvolume.h

См. также раздел

Интерфейс IAudioEndpointVolume

IAudioEndpointVolume::GetChannelVolumeLevel

IAudioEndpointVolume::GetMasterVolumeLevel

IAudioEndpointVolume::SetChannelVolumeLevel

IAudioEndpointVolume::SetMasterVolumeLevel

IEndpointVolume::GetVolumeStepInfo

IEndpointVolume::VolumeStepDown

IEndpointVolume::VolumeStepUp