EvtCancel 함수(winevt.h)
핸들에서 보류 중인 모든 작업을 취소합니다.
구문
BOOL EvtCancel(
EVT_HANDLE Object
);
매개 변수
Object
작업을 취소하려는 핸들입니다. 다음 작업을 취소할 수 있습니다.
EvtClearLog, EvtExportLog, EvtQuery 및 EvtSubscribe 작업을 취소하려면 세션 핸들을 전달해야 합니다. 기본 세션(로컬 세션)을 지정하려면 이 매개 변수를 NULL로 설정합니다.반환 값
반환 코드/값 | 설명 |
---|---|
|
함수가 성공했습니다. |
|
함수가 실패했습니다. 오류 코드를 얻으려면 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 |