Метод 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. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Параметр 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