IAudioVolumeDuckNotification 介面 (audiopolicy.h)

IAudioVolumeDuckNotification 介面是由系統用來傳送有關數據流衰減變更的通知。Stream 衰減或減少功能是在 Windows 7 中引進的功能,系統會在開啟新的通訊數據流時調整非通訊數據流的數量。 如需這項功能的詳細資訊,請參閱 預設的擷取體驗

繼承

IAudioVolumeDuckNotification 介面繼承自 IUnknown 介面。 IAudioVolumeDuckNotification 也有下列類型的成員:

方法

IAudioVolumeDuckNotification 介面具有這些方法。

 
IAudioVolumeDuckNotification::OnVolumeDuckNotification

OnVolumeDuckNotification 方法會傳送有關擱置系統擷取事件的通知。
IAudioVolumeDuckNotification::OnVolumeUnduckNotification

OnVolumeUnduckNotification 方法會傳送有關擱置系統未擷取事件的通知。

備註

如果應用程式需要退出系統所提供的系統衰減體驗,則必須呼叫 IAudioSessionControl2::SetDuckingPreference 並指定該喜好設定。

不同於 WASAPI 系統元件所實作的其他 WASAPI 介面, IAudioVolumeDuckNotification 介面是由應用程式實作,以提供自定義數據流衰減行為。 若要接收事件通知,應用程式會傳遞至 IAudioSessionManager2::RegisterDuckNotification 方法的指標,指向應用程式的 IAudioVolumeDuckNotification 實作。

應用程式註冊其 IAudioVolumeDuckNotification 介面之後,會話管理員會在需要傳送擷取通知時呼叫 IAudioVolumeDuckNotification 實作。 應用程式會透過介面的方法,以回呼形式接收事件通知。

當應用程式不再需要收到通知時,它會呼叫 IAudioSessionManager2::UnregisterDuckNotification 方法。 UnregisterDuckNotification 方法會移除應用程式先前註冊的 IAudioVolumeDuckNotification 介面註冊。

應用程式在事件回呼期間不得註冊或取消註冊通知回呼。

如需詳細資訊,請參閱 擷取通知的實作考慮

範例

下列範例程式代碼示範 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
標頭 audiopolicy.h

另請參閱

核心音訊介面

使用通訊裝置