IAudioSessionManager2 介面 (audiopolicy.h)
IAudioSessionManager2 介面可讓應用程式管理音訊裝置的子混音。
若要取得 IAudioSessionManager2 介面的參考,應用程式必須遵循下列步驟在音訊裝置上加以啟用:
- 使用 IMMDevice 介面頁面上所述的其中一種技術,取得音訊端點裝置 之 IMMDevice 介面的參考。
- 呼叫 IMMDevice::Activate 方法,並將參數 iid 設定為 IID_IAudioSessionManager2。
當應用程式想要釋放 IAudioSessionManager2 介面實例時,應用程式必須呼叫介面的 Release 方法。
使用這個介面的應用程式線程必須針對 COM 初始化。 如需 COM 初始化的詳細資訊,請參閱 Windows SDK 檔中的 CoInitializeEx 函式描述。
繼承
IAudioSessionManager2 介面繼承自 IAudioSessionManager。 IAudioSessionManager2 也有下列類型的成員:
方法
IAudioSessionManager2 介面具有這些方法。
IAudioSessionManager2::GetSessionEnumerator GetSessionEnumerator 方法會取得音訊會話列舉值物件的指標。 |
IAudioSessionManager2::RegisterDuckNotification RegisterDuckNotification 方法會向會話管理員註冊應用程式,以接收擷取通知。 |
IAudioSessionManager2::RegisterSessionNotification RegisterSessionNotification 方法會註冊應用程式,以在建立會話時接收通知。 |
IAudioSessionManager2::UnregisterDuckNotification UnregisterDuckNotification 方法會刪除應用程式先前的註冊,以接收通知。 |
IAudioSessionManager2::UnregisterSessionNotification UnregisterSessionNotification 方法會刪除註冊,以在建立會話時接收通知。 |
備註
應用程式可以使用此介面來執行下列工作:
- 註冊以接收擷取通知。
- 註冊以在建立會話時接收通知。
- 列舉用來取得介面指標之音訊裝置上的會話。
此介面支援 串流衰減 或 擷取的自定義實作,這是 Windows 7 的新功能。 播放媒體數據流的應用程式可以在預設通訊裝置上開啟新的通訊數據流時,使其行為不同。 例如,當新的通訊數據流開啟時,可以暫停原始媒體數據流。 如需此功能的詳細資訊,請參閱 使用通訊裝置。
管理媒體串流且想要提供自定義小節實作的應用程式,必須在會話事件發生時註冊以接收通知。 針對數據流衰減,當預設通訊裝置上開啟或關閉通訊數據流時,系統就會引發會話事件。 如需詳細資訊,請參閱 提供自定義小管行為。
範例
下列範例程式代碼示範如何取得音訊裝置 之 IAudioSessionManager2 介面的參考。
HRESULT CreateSessionManager(IAudioSessionManager2** ppSessionManager)
{
HRESULT hr = S_OK;
IMMDevice* pDevice = NULL;
IMMDeviceEnumerator* pEnumerator = NULL;
IAudioSessionManager2* pSessionManager = NULL;
// Create the device enumerator.
CHECK_HR( hr = CoCreateInstance(
__uuidof(MMDeviceEnumerator),
NULL, CLSCTX_ALL,
__uuidof(IMMDeviceEnumerator),
(void**)&pEnumerator));
// Get the default audio device.
CHECK_HR( hr = pEnumerator->GetDefaultAudioEndpoint(
eRender, eConsole, &pDevice));
// Get the session manager.
CHECK_HR( hr = pDevice->Activate(
__uuidof(IAudioSessionManager2), CLSCTX_ALL,
NULL, (void**)&pSessionManager));
// Return the pointer to the caller.
*(ppSessionManager) = pSessionManager;
(*ppSessionManager)->AddRef();
done:
// Clean up.
SAFE_RELEASE(pSessionManager);
SAFE_RELEASE(pEnumerator);
SAFE_RELEASE(pDevice);
return hr;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | audiopolicy.h |