Функция 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 , поток A должен завершиться вскоре после вызова EvtCancel .
- После полного завершения операции потоком A (EvtSeek) поток B может закрыть дескриптор результата запроса с помощью функции EvtClose .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | winevt.h |
Библиотека | Wevtapi.lib |
DLL | Wevtapi.dll |