共用方式為


EvtCancel 函式 (winevt.h)

取消句柄上的所有擱置作業。

語法

BOOL EvtCancel(
  EVT_HANDLE Object
);

參數

Object

您要取消其作業的句柄。 您可以取消下列作業:

若要取消 EvtClearLogEvtExportLogEvtQueryEvtSubscribe 作業,您必須傳遞會話句柄。 若要指定預設會話 (本機會話) ,請將此參數設定為 NULL

傳回值

傳回碼/值 Description
TRUE
此函數已成功。
FALSE
函式失敗。 若要取得錯誤碼,請呼叫 GetLastError 函式。

備註

使用此函式取消長時間執行的作業。 例如,呼叫 EvtNext 函式可能會因為篩選數千筆事件記錄而花費很長的時間。 呼叫 EvtCancel 會阻止 EvtNext 函式處理進一步的事件記錄。 請注意,函式可能無法立即停止作業。

您必須呼叫 EvtClose 函式,才能在完成時關閉句柄。

下列程式描述如何取消長時間執行的作業。

取消長時間執行的作業

  1. 線程 A 會呼叫長時間執行的作業 (,例如 EvtSeek 函式) 。
  2. 線程 B 想要取消並關閉所有作業,因此線程 B 會呼叫 EvtCancel 函式。
  3. 接著,線程 B 會等候所有擱置的呼叫完成 (,方法是與線程 A 同步處理) 。 由於已呼叫 EvtCancel 函式,因此在呼叫 EvtCancel 之後,線程 A 應該很快就會完成。
  4. 線程 A 完成作業 (EvtSeek) 之後,線程 B 可以使用 EvtClose 函式關閉查詢結果句柄。
正在停止的作業會傳回錯誤碼ERROR_CANCELLED。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 winevt.h
程式庫 Wevtapi.lib
Dll Wevtapi.dll