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 |