IAudioSessionEvents::OnSessionDisconnected 方法 (audiopolicy.h)
OnSessionDisconnected 方法會通知用戶端音訊會話已中斷連線。
語法
HRESULT OnSessionDisconnected(
[in] AudioSessionDisconnectReason DisconnectReason
);
參數
[in] DisconnectReason
音訊會話已中斷連線的原因。 呼叫端會將此參數設定為下表所示的其中一個 AudioSessionDisconnectReason 列舉值。
值 | Description |
---|---|
DisconnectReasonDeviceRemoval | 使用者已移除音訊端點裝置。 |
DisconnectReasonServerShutdown | Windows 音訊服務已停止。 |
DisconnectReasonFormatChanged | 音訊會話所連線裝置的數據流格式已變更。 |
DisconnectReasonSessionLogoff | 用戶已註銷音訊會話執行所在的 Windows 終端機 Services (WTS) 會話。 |
DisconnectReasonSessionDisconnected | 音訊會話執行所在的 WTS 會話已中斷連線。 |
DisconnectReasonExclusiveModeOverride | (共用模式) 音訊會話已中斷連線,讓音訊端點裝置可供獨佔模式連線使用。 |
如需 WTS 工作階段的詳細資訊,請參閱 Windows SDK 檔。
傳回值
如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。
備註
中斷會話連線時,會話管理員會關閉屬於該會話的數據流,並使這些數據流上服務的所有未處理要求失效。 客戶端應該透過對 IAudioClient::GetService 方法的呼叫,釋放對已關閉數據流之 IAudioClient 介面的所有參考,並釋放其先前透過呼叫 IAudioClient::GetService 方法取得之服務介面的所有參考,以響應中斷連線。
中斷連線之後,WASAPI 介面中系結至已中斷聯機會話中已關閉數據流的許多方法都會傳回錯誤碼 AUDCLNT_E_DEVICE_INVALIDATED (,例如,請參閱 IAudioClient::GetCurrentPadding) 。 如需從此錯誤復原的相關信息,請參閱 從 Invalid-Device 錯誤復原。
如果 Windows 音訊服務意外終止,則沒有機會通知用戶端正在關閉。 在此情況下,用戶端會瞭解服務在呼叫 IAudioClient::GetCurrentPadding 之類的方法時已停止,發現服務已不再執行,且錯誤碼AUDCLNT_E_SERVICE_NOT_RUNNING失敗。
用戶端無法產生會話中斷連線的事件。 系統一律是這種類型的事件來源。 因此,不同於某些其他 IAudioSessionEvents 方法,此方法沒有內容參數。
如需實作 IAudioSessionEvents 介面中方法的程式代碼範例,請參閱 音訊會話事件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | audiopolicy.h |