EvtCancel 函式 (winevt.h)
取消句柄上的所有擱置作業。
語法
BOOL EvtCancel(
EVT_HANDLE Object
);
參數
Object
您要取消其作業的句柄。 您可以取消下列作業:
若要取消 EvtClearLog、 EvtExportLog、 EvtQuery 和 EvtSubscribe 作業,您必須傳遞會話句柄。 若要指定預設會話 (本機會話) ,請將此參數設定為 NULL。傳回值
傳回碼/值 | Description |
---|---|
|
此函數已成功。 |
|
函式失敗。 若要取得錯誤碼,請呼叫 GetLastError 函式。 |
備註
使用此函式取消長時間執行的作業。 例如,呼叫 EvtNext 函式可能會因為篩選數千筆事件記錄而花費很長的時間。 呼叫 EvtCancel 會阻止 EvtNext 函式處理進一步的事件記錄。 請注意,函式可能無法立即停止作業。
您必須呼叫 EvtClose 函式,才能在完成時關閉句柄。
下列程式描述如何取消長時間執行的作業。
取消長時間執行的作業
- 線程 A 會呼叫長時間執行的作業 (,例如 EvtSeek 函式) 。
- 線程 B 想要取消並關閉所有作業,因此線程 B 會呼叫 EvtCancel 函式。
- 接著,線程 B 會等候所有擱置的呼叫完成 (,方法是與線程 A 同步處理) 。 由於已呼叫 EvtCancel 函式,因此在呼叫 EvtCancel 之後,線程 A 應該很快就會完成。
- 線程 A 完成作業 (EvtSeek) 之後,線程 B 可以使用 EvtClose 函式關閉查詢結果句柄。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winevt.h |
程式庫 | Wevtapi.lib |
Dll | Wevtapi.dll |