IMediaEvent::GetEventHandle 方法 (control.h)
[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 |