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 |