다음을 통해 공유


EvtCancel 함수(winevt.h)

핸들에서 보류 중인 모든 작업을 취소합니다.

구문

BOOL EvtCancel(
  EVT_HANDLE Object
);

매개 변수

Object

작업을 취소하려는 핸들입니다. 다음 작업을 취소할 수 있습니다.

EvtClearLog, EvtExportLog, EvtQueryEvtSubscribe 작업을 취소하려면 세션 핸들을 전달해야 합니다. 기본 세션(로컬 세션)을 지정하려면 이 매개 변수를 NULL로 설정합니다.

반환 값

반환 코드/값 설명
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