Поделиться через


Функция EvtCancel (winevt.h)

Отменяет все ожидающие операции с дескриптором.

Синтаксис

BOOL EvtCancel(
  EVT_HANDLE Object
);

Параметры

Object

Дескриптор, операцию которого требуется отменить. Вы можете отменить следующие операции:

Чтобы отменить операции EvtClearLog, EvtExportLog, EvtQuery и EvtSubscribe , необходимо передать дескриптор сеанса. Чтобы указать сеанс по умолчанию (локальный сеанс), задайте для этого параметра значение NULL.

Возвращаемое значение

Возвращаемый код или значение Описание
TRUE
Функция выполнена успешно.
FALSE
Сбой функции. Чтобы получить код ошибки, вызовите функцию GetLastError .

Комментарии

Используйте эту функцию для отмены длительных операций. Например, вызов функции EvtNext теоретически может занять много времени из-за фильтрации тысяч записей событий. Вызов EvtCancel приведет к остановке обработки дальнейших записей событий функцией EvtNext . Обратите внимание, что функция может не остановить операцию немедленно.

Чтобы закрыть дескриптор по завершении, необходимо вызвать функцию EvtClose .

В следующей процедуре описывается отмена длительной операции.

Отмена длительной операции

  1. Поток A вызывает длительную операцию (например, функцию EvtSeek ).
  2. Поток B хочет отменить и закрыть все операции, поэтому поток B вызывает функцию EvtCancel .
  3. Затем поток B ожидает завершения всех ожидающих вызовов (путем синхронизации с потоком A). Так как была вызвана функция EvtCancel , поток A должен завершиться вскоре после вызова EvtCancel .
  4. После полного завершения операции потоком A (EvtSeek) поток B может закрыть дескриптор результата запроса с помощью функции EvtClose .
Остановленная операция возвращается с кодом ошибки ERROR_CANCELLED.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winevt.h
Библиотека Wevtapi.lib
DLL Wevtapi.dll