Интерфейс IAudioEndpointVolumeCallback (endpointvolume.h)

Интерфейс IAudioEndpointVolumeCallback предоставляет уведомления об изменениях уровня громкости и состояния отключения звука на устройстве конечной точки звука. В отличие от других интерфейсов в этом разделе, которые реализуются системным компонентом WASAPI, клиент API EndpointVolume реализует интерфейс IAudioEndpointVolumeCallback . Для получения уведомлений о событиях клиент передает указатель на интерфейс IAudioEndpointVolumeCallback методу IAudioEndpointVolume::RegisterControlChangeNotify .

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

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

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

Чтобы определить, имеет ли устройство элементы управления томом оборудования и отключением звука, вызовите метод IAudioEndpointVolume::QueryHardwareSupport .

При реализации интерфейса IAudioEndpointVolumeCallback клиент должен соблюдать следующие правила, чтобы избежать взаимоблокировок:

  • Методы в интерфейсе должны быть неблокировными. Клиент никогда не должен ждать объекта синхронизации во время обратного вызова события.
  • Клиент никогда не должен вызывать метод IAudioEndpointVolume::UnregisterControlChangeNotify во время обратного вызова события.
  • Клиент никогда не должен освобождать последнюю ссылку на объект API EndpointVolume во время обратного вызова события.
Пример кода, реализующий интерфейс IAudioEndpointVolumeCallback , см. в разделе Элементы управления громкостью конечных точек.

Наследование

Интерфейс IAudioEndpointVolumeCallback наследуется от интерфейса IUnknown . IAudioEndpointVolumeCallback также имеет следующие типы элементов:

Методы

Интерфейс IAudioEndpointVolumeCallback содержит следующие методы.

 
IAudioEndpointVolumeCallback::OnNotify

Метод OnNotify уведомляет клиента об изменении уровня громкости или выключения звука на устройстве конечной точки звука.

Требования

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

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

Основные звуковые интерфейсы

EndpointVolume API

IAudioEndpointVolume::RegisterControlChangeNotify

IAudioEndpointVolume::UnregisterControlChangeNotify