Интерфейс IAudioEndpointVolumeCallback (endpointvolume.h)
Интерфейс IAudioEndpointVolumeCallback предоставляет уведомления об изменениях уровня громкости и состояния отключения звука на устройстве конечной точки звука. В отличие от других интерфейсов в этом разделе, которые реализуются системным компонентом WASAPI, клиент API EndpointVolume реализует интерфейс IAudioEndpointVolumeCallback . Для получения уведомлений о событиях клиент передает указатель на интерфейс IAudioEndpointVolumeCallback методу IAudioEndpointVolume::RegisterControlChangeNotify .
После регистрации интерфейса IAudioEndpointVolumeCallback клиент получает уведомления о событиях в виде обратных вызовов с помощью метода OnNotify в интерфейсе . Эти уведомления о событиях возникают, когда один из следующих методов приводит к изменению уровня громкости или отключению состояния устройства конечной точки:
- IAudioEndpointVolume::SetChannelVolumeLevel
- IAudioEndpointVolume::SetChannelVolumeLevelScalar
- IAudioEndpointVolume::SetMasterVolumeLevel
- IAudioEndpointVolume::SetMasterVolumeLevelScalar
- IAudioEndpointVolume::SetMute
- IAudioEndpointVolume::VolumeStepDown
- IAudioEndpointVolume::VolumeStepUp
Если на устройстве есть аппаратные элементы управления громкостью и выключением звука, изменения, внесенные в параметры громкости и отключения звука с помощью методов из предыдущего списка, влияют на громкость устройства как в общем, так и в монопольном режиме. Если на устройстве отсутствуют аппаратные элементы управления громкостью и отключением звука, изменения, внесенные в том программного обеспечения и отключение звука с помощью этих методов, влияют на громкость устройства в режиме общего доступа, но не в монопольном режиме. В монопольном режиме клиент и устройство обмениваются звуковыми данными напрямую, минуя элементы управления программным обеспечением. Однако изменения, внесенные в элементы управления программным обеспечением с помощью этих методов, создают уведомления о событиях независимо от того, работает ли устройство в общем или монопольном режиме. Изменения, внесенные в элемент управления громкостью программного обеспечения и отключением звука во время работы устройства в монопольном режиме, вступают в силу при переключите устройство в общий режим.
Чтобы определить, имеет ли устройство элементы управления томом оборудования и отключением звука, вызовите метод IAudioEndpointVolume::QueryHardwareSupport .
При реализации интерфейса IAudioEndpointVolumeCallback клиент должен соблюдать следующие правила, чтобы избежать взаимоблокировок:
- Методы в интерфейсе должны быть неблокировными. Клиент никогда не должен ждать объекта синхронизации во время обратного вызова события.
- Клиент никогда не должен вызывать метод IAudioEndpointVolume::UnregisterControlChangeNotify во время обратного вызова события.
- Клиент никогда не должен освобождать последнюю ссылку на объект API EndpointVolume во время обратного вызова события.
Наследование
Интерфейс IAudioEndpointVolumeCallback наследуется от интерфейса IUnknown . IAudioEndpointVolumeCallback также имеет следующие типы элементов:
Методы
Интерфейс IAudioEndpointVolumeCallback содержит следующие методы.
IAudioEndpointVolumeCallback::OnNotify Метод OnNotify уведомляет клиента об изменении уровня громкости или выключения звука на устройстве конечной точки звука. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | endpointvolume.h |