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


Метод IPerChannelDbLevel::SetLevelAllChannels (devicetopology.h)

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

Синтаксис

HRESULT SetLevelAllChannels(
  [in] float [] aLevelsDB,
  [in] ULONG    cChannels,
  [in] LPCGUID  pguidEventContext
);

Параметры

[in] aLevelsDB

Указатель на массив уровней тома. Этот параметр указывает на выделенный вызывающим объектом массив с плавающей точкой , в который метод записывает новые уровни тома в децибелах для всех каналов. Метод записывает уровень для определенного канала в элемент массива, индекс которого соответствует номеру канала. Если аудиопоток содержит n каналов, каналы нумеруются от 0 до n–1. Чтобы получить количество каналов в потоке, вызовите метод IPerChannelDbLevel::GetChannelCount .

[in] cChannels

Количество элементов в массиве aLevelsDB . Если этот параметр не соответствует количеству каналов в аудиопотоке, метод завершается ошибкой без изменения массива aLevelsDB .

[in] pguidEventContext

Контекстное значение для метода IControlChangeNotify::OnNotify . Этот параметр указывает на GUID контекста события. Если вызов SetLevelAllChannels изменяет состояние элемента управления уровня, все клиенты, зарегистрированные в IControlChangeNotify , будут получать уведомления. В реализации метода OnNotify клиент может проверить GUID контекста события, чтобы определить, является ли он или другой клиент источником события изменения элемента управления. Если вызывающий объект предоставляет указатель NULL для этого параметра, метод уведомления клиента получает указатель контекста NULL .

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

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

Код возврата Описание
E_INVALIDARG
Параметр cChannels не равен количеству каналов.
E_POINTER
Указатель aLevelsDB имеет значение NULL.
E_OUTOFMEMORY
Недостаточно памяти.

Комментарии

Если указанное значение уровня для любого канала выходит за пределы диапазона, указанного методом IPerChannelDbLevel::GetLevelRange для этого канала, вызов SetLevelAllChannels зажимает значение поддерживаемого диапазона и завершается успешно. Последующий вызов метода IPerChannelDbLevel::GetLevel извлекает фактическое значение, используемое для этого канала.

Требования

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

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

Интерфейс IPerChannelDbLevel

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange