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


Интерфейс 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

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

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

Использование устройства связи