IAudioVolumeDuckNotification-Schnittstelle (audiopolicy.h)

Die IAudioVolumeDuckNotification-Schnittstelle wird vom System verwendet, um Benachrichtigungen über Änderungen der Streamdämpfung zu senden. Stream Dämpfung oder Ducking ist ein Feature, das in Windows 7 eingeführt wurde, bei dem das System die Lautstärke eines Nicht-Kommunikationsdatenstroms anpasst, wenn ein neuer Kommunikationsstream geöffnet wird. Weitere Informationen zu diesem Feature finden Sie unter Standard-Ducking-Erfahrung.

Vererbung

Die IAudioVolumeDuckNotification-Schnittstelle erbt von der IUnknown-Schnittstelle . IAudioVolumeDuckNotification verfügt auch über folgende Arten von Membern:

Methoden

Die IAudioVolumeDuckNotification-Schnittstelle verfügt über diese Methoden.

 
IAudioVolumeDuckNotification::OnVolumeDuckNotification

Die OnVolumeDuckNotification-Methode sendet eine Benachrichtigung über ein ausstehendes Systementenkungsereignis.
IAudioVolumeDuckNotification::OnVolumeUnduckNotification

Die OnVolumeUnduckNotification-Methode sendet eine Benachrichtigung über ein ausstehendes System-Unducking-Ereignis.

Hinweise

Wenn eine Anwendung die vom System bereitgestellte Systemabschwächungserfahrung deaktivieren muss, muss sie IAudioSessionControl2::SetDuckingPreference aufrufen und diese Einstellung angeben.

Im Gegensatz zu den anderen WASAPI-Schnittstellen, die von der WASAPI-Systemkomponente implementiert werden, wird die IAudioVolumeDuckNotification-Schnittstelle von der Anwendung implementiert, um benutzerdefiniertes Streamdämpfungsverhalten bereitzustellen. Zum Empfangen von Ereignisbenachrichtigungen übergibt die Anwendung einen Zeiger auf die Implementierung von IAudioVolumeDuckDuckNotification an die IAudioSessionManager2::RegisterDuckNotification-Methode.

Nachdem die Anwendung ihre IAudioVolumeDuckNotification-Schnittstelle registriert hat, ruft der Sitzungs-Manager die IAudioVolumeDuckNotification-Implementierung auf, wenn ducking-Benachrichtigungen gesendet werden müssen. Die Anwendung empfängt Ereignisbenachrichtigungen in Form von Rückrufen über die Methoden der Schnittstelle.

Wenn die Anwendung keine Benachrichtigungen mehr empfangen muss, ruft sie die IAudioSessionManager2::UnregisterDuckNotification-Methode auf. Die UnregisterDuckNotification-Methode entfernt die Registrierung einer IAudioVolumeDuckNotification-Schnittstelle , die die Anwendung zuvor registriert hat.

Die Anwendung darf Benachrichtigungsrückrufe während eines Ereignisrückrufs nicht registrieren oder aufheben.

Weitere Informationen finden Sie unter Implementierungsüberlegungen für Ducking-Benachrichtigungen.

Beispiele

Der folgende Beispielcode zeigt eine Beispielimplementierung der IAudioVolumeDuckNotification-Schnittstelle .



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;
    }
};

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile audiopolicy.h

Weitere Informationen

Kern-Audioschnittstellen

Verwenden eines Kommunikationsgeräts