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


EndpointVolume API

API EndpointVolume позволяет специализированным клиентам контролировать и отслеживать уровни громкости устройств аудиоконечной точки. Клиент получает ссылки на интерфейсы в API EndpointVolume путем получения интерфейса IMMDevice устройства аудио конечной точки и вызова метода IMMDevice::Activate.

Файл заголовка Endpointvolume.h определяет интерфейсы в API EndpointVolume.

Звуковые приложения, использующие API MMDevice и WASAPI, обычно используют интерфейс ISimpleAudioVolume для управления уровнями томов на основе сеанса. Для использования API EndpointVolume требуется только два типа звуковых приложений. Эти типы приложений:

  • Приложения, управляющие главными уровнями томов устройств аудиоконечной точки, аналогичные программе управления томами Windows, Sndvol.exe.
  • Профессиональные приложения аудио ("pro audio") для которых требуется монопольный доступ к устройствам конечной точки аудио.

Недопустимое использование API EndpointVolume может повлиять на политику звука Windows и нарушить параметры системного тома пользователя.

Если устройство аудио конечной точки реализует аппаратный том и элементы управления отключением, API EndpointVolume использует эти элементы управления для управления томом устройства. В противном случае API EndpointVolume реализует элементы управления в программном обеспечении, прозрачно для клиента.

Если у устройства есть аппаратный том и элементы управления выключением, изменения, внесенные в тома устройства и отключение параметров с помощью API EndpointVolume, влияют на уровень тома как в общем режиме, так и в монопольном режиме. Если на устройстве отсутствуют аппаратные тома и элементы управления отключением, изменения, внесенные в том программного обеспечения и отключение элементов управления с помощью API EndpointVolume, влияют на уровень тома в общем режиме, но не в монопольном режиме. В монопольном режиме клиент и устройство обмениваются звуковыми данными напрямую, обходя элементы управления программным обеспечением.

Для приложений, которые должны управлять аппаратным томом и отключить элементы управления, API EndpointVolume предлагает два потенциальных преимущества по сравнению с API DeviceTopology.

Во-первых, ряд устройств аудиоадаптера не хватает аппаратных элементов управления громкости. Если устройство не имеет аппаратного элемента управления томом, интерфейс IAudioEndpointVolume в API EndpointVolume автоматически реализует элемент управления томом программного обеспечения в потоке или с этого устройства. Для клиента API EndpointVolume результатом является то же, реализуется ли управление томами в оборудовании устройством или программным обеспечением интерфейсом API EndpointVolume.

Во-вторых, даже если устройство адаптера реализует аппаратные элементы управления томами, приложение, использующее API DeviceTopology для реализации алгоритма обхода топологии, может не найти элемент управления, который он ищет. Как правило, такое приложение предназначено для обхода аппаратной топологии конкретного устройства или набора связанных устройств. Приложение рискует сбоем, если он пытается пройти топологию устройства, которое оно не было специально разработано или протестировано.

Для использования API DeviceTopology требуются только специализированные приложения, которые должны получать доступ к аппаратным функциям, отличным от томов и элементов управления выключением. Для приложений, требующих управления только уровнем громкости потока в монопольном режиме, API EndpointVolume проще использовать и надежно работать с более широким спектром звуковых устройств.

Примеры кода, использующие интерфейсы в API EndpointVolume, см. в следующих разделах:

Чтобы просмотреть пример, использующий API EndpointVolume, см . статью EndpointVolume в пакете SDK для Windows.

API EndpointVolume реализует следующие интерфейсы.

Интерфейс Description
IAudioEndpointVolume Представляет элементы управления громкостями в звуковом потоке или с устройства конечной точки аудио.
IAudioMeterInformation Представляет пиковый метр на аудиопотоке или с устройства аудио конечной точки.

 

Кроме того, клиенты API EndpointVolume, требующие уведомления о томе и отключении изменений на устройствах конечной точки аудио должны реализовать следующий интерфейс.

Интерфейс Description
IAudioEndpointVolumeCallback Предоставляет уведомления о том, когда изменяется уровень громкости или отключение состояния устройства звуковой конечной точки.

 

Элементы управления томами

Интерфейс IMMDevice

IMMDevice::Activate

ISimpleAudioVolume

Справочник по программированию