Share via


IAudioClient::SetEventHandle 方法 (audioclient.h)

SetEventHandle 方法會設定當音訊緩衝區準備好由客戶端處理時,系統發出訊號的事件句柄。

語法

HRESULT SetEventHandle(
  [in] HANDLE eventHandle
);

參數

[in] eventHandle

事件句柄。

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括但不限於下表所示的值。

傳回碼 Description
E_INVALIDARG
Parameter eventHandleNULL 或無效的句柄。
AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED
音訊數據流未針對事件驅動緩衝進行初始化。
AUDCLNT_E_NOT_INITIALIZED
音訊數據流尚未成功初始化。
AUDCLNT_E_DEVICE_INVALIDATED
音訊端點裝置已解除叢集,或音訊硬體或相關聯的硬體資源已重新設定、停用、移除或無法使用。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 音訊服務未執行。

備註

這個方法需要 IAudioClient 介面的先前初始化。 此方法的所有呼叫都會失敗,併發生錯誤AUDCLNT_E_NOT_INITIALIZED,直到用戶端成功呼叫 IAudioClient::Initialize 方法來初始化音頻數據流為止。

在數據流初始化期間,用戶端可以選擇啟用事件驅動緩衝。 若要這樣做,用戶端會呼叫已設定AUDCLNT_STREAMFLAGS_EVENTCALLBACK旗標的 IAudioClient::Initialize 方法。 啟用事件驅動緩衝之後,以及在呼叫 IAudioClient::Start 方法來啟動數據流之前,客戶端必須呼叫 SetEventHandle 來註冊系統在每次緩衝區準備好可供用戶端處理時發出訊號的事件句柄。

事件句柄應該在用戶端呼叫 Start 方法時處於未簽署的狀態。

如果用戶端已啟用數據流的事件驅動緩衝,但用戶端會呼叫該數據流的 Start 方法,而不先呼叫 SetEventHandle則 Start 呼叫將會失敗並傳回錯誤碼。

如果用戶端未啟用數據流的事件驅動緩衝,但嘗試呼叫 SetEventHandle 來設定數據流的事件句柄,則呼叫將會失敗並傳回錯誤碼。

如需呼叫 SetEventHandle 方法的程式代碼範例,請參閱 獨佔模式數據流

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 audioclient.h

另請參閱

IAudioClient 介面

IAudioClient::Initialize

IAudioClient::Start