IMediaEvent::GetEventHandle 方法 (control.h)

[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式代碼,以使用新的 API。]

方法 GetEventHandle 會擷取手動重設事件的句柄,該事件會在佇列包含事件通知時維持訊號。

語法

HRESULT GetEventHandle(
  [out] OAEVENT *hEvent
);

參數

[out] hEvent

接收事件句柄之變數的指標。

傳回值

傳回S_OK。

備註

Filter Graph Manager 會保留可反映事件佇列狀態的手動重設事件。 如果佇列包含事件通知,則會發出手動重設事件的訊號。 如果佇列是空的, IMediaEvent::GetEvent 方法會重設事件。

應用程式可以使用這個事件來判斷佇列的狀態。 第一次呼叫 GetEventHandle 以取得事件的句柄。 使用 WaitForSingleObject 之類的函式,等候事件發出訊號。 當事件收到訊號時,請呼叫 IMediaEvent::GetEvent 方法,從佇列擷取下一個事件通知。 Filter Graph Manager 會讓事件保持訊號,直到佇列是空的;然後它會重設事件。

請勿關閉此方法傳回的事件句柄,因為篩選圖形會在內部使用事件句柄。 此外,請勿在釋放 Filter Graph 管理員之後使用句柄,因為在篩選圖形管理員終結之後,句柄會變成無效。 (若要避免此錯誤,最好呼叫 DuplicateHandle 來複製句柄,並使用重複的 ,而不是原始句柄。完成時關閉重複句柄。)

為了自動化相容性,這個方法會採用 OAEVENT 類型的指標。 在 C++ 中,宣告 HANDLE 類型的變數,並將其轉換成 OAEVENT 指標,如下所示:


HANDLE hEvent;
GetEventHandle( (OAEVENT*) &hEvent );

應用程式監視事件佇列的另一種方式是呼叫 IMediaEventEx::SetNotifyWindow 方法。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 control.h (包含 Dshow.h)
程式庫 Strmiids.lib

另請參閱

錯誤和成功碼

IMediaEvent 介面