Интерфейс IAudioVolumeDuckNotification (audiopolicy.h)
Интерфейс IAudioVolumeDuckNotification используется системой для отправки уведомлений об изменениях затухания потока. Stream затухание, или утихание, — это функция, появилась в Windows 7, когда система настраивает объем потока без связи при открытии нового потока связи. Дополнительные сведения об этой функции см. в разделе Стандартный интерфейс ducking.
Наследование
Интерфейс IAudioVolumeDuckNotification наследуется от интерфейса IUnknown . IAudioVolumeDuckNotification также имеет следующие типы элементов:
Методы
Интерфейс IAudioVolumeDuckNotification имеет следующие методы.
IAudioVolumeDuckNotification::OnVolumeDuckNotification Метод OnVolumeDuckNotification отправляет уведомление об ожидающих системном событии ducking. |
IAudioVolumeDuckNotification::OnVolumeUnduckNotification Метод OnVolumeUnduckNotification отправляет уведомление о ожидающих системном событии отклонения. |
Комментарии
Если приложению необходимо отказаться от затухания системы, предоставляемой системой, оно должно вызвать IAudioSessionControl2::SetDuckingPreference и указать этот параметр.
В отличие от других интерфейсов WASAPI, реализованных системным компонентом WASAPI, интерфейс IAudioVolumeDuckNotification реализуется приложением для обеспечения настраиваемого поведения затухания потока. Для получения уведомлений о событиях приложение передает методу IAudioSessionManager2::RegisterDuckNotification указатель на реализацию IAudioVolumeDuckNotification приложения.
После регистрации интерфейса IAudioVolumeDuckNotification диспетчер сеансов вызывает реализацию IAudioVolumeDuckNotification , когда ему требуется отправить уведомления о ducking. Приложение получает уведомления о событиях в виде обратных вызовов через методы интерфейса .
Когда приложению больше не нужно получать уведомления, оно вызывает метод IAudioSessionManager2::UnregisterDuckNotification . Метод UnregisterDuckNotification удаляет регистрацию интерфейса IAudioVolumeDuckNotification , зарегистрированного ранее приложением.
Приложение не должно регистрировать или отменять регистрацию обратных вызовов уведомлений во время обратного вызова события.
Дополнительные сведения см. в разделе Рекомендации по реализации уведомлений ducking.
Примеры
В следующем примере кода показан пример реализации интерфейса IAudioVolumeDuckNotification .
class CDuckNotification : public IAudioVolumeDuckNotification
{
LONG _Cref;
HWND m_hwndMain;
CDuckNotification (HWND hWnd) :
_Cref(1),
m_hwndMain (hWnd)
{}
HRESULT OnVolumeDuckNotification (LPCWSTR SessionID, UINT32 CommunicationSessionCount)
{
PostMessage(m_hwndMain, WM_VOLUME_DUCK, 0, 0);
return S_OK;
}
HRESULT OnVolumeUnduckNotification (LPCWSTR SessionID)
{
PostMessage(m_hwndMain, WM_VOLUME_UNDUCK, 0, 0);
return S_OK;
}
protected:
~CDuckNotification() {}
public:
HRESULT QueryInterface (REFIID Iid, void** ReturnValue)
{
if (ReturnValue == NULL)
{
return E_POINTER;
}
*ReturnValue = NULL;
if (iid == IID_IUnknown)
{
*ReturnValue = static_cast<IUnknown *>(static_cast<IAudioVolumeDuckNotification *>(this));
AddRef();
}
else if (iid == __uuidof(IAudioVolumeDuckNotification))
{
*ReturnValue = static_cast<IAudioVolumeDuckNotification *>(this);
AddRef();
}
else
{
return E_NOINTERFACE;
}
return S_OK;
}
ULONG AddRef()
{
return InterlockedIncrement(&_Cref);
}
ULONG Release()
{
LONG ref = InterlockedDecrement(&_Cref);
if (ref == 0)
{
delete this;
}
return 0;
}
};
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | audiopolicy.h |