Compartilhar via


Função EvtCancel (winevt.h)

Cancela todas as operações pendentes em um identificador.

Sintaxe

BOOL EvtCancel(
  EVT_HANDLE Object
);

Parâmetros

Object

O identificador cuja operação você deseja cancelar. Você pode cancelar as seguintes operações:

Para cancelar as operações EvtClearLog, EvtExportLog, EvtQuery e EvtSubscribe , você deve passar o identificador da sessão. Para especificar a sessão padrão (sessão local), defina esse parâmetro como NULL.

Retornar valor

Valor/código retornado Descrição
TRUE
A função foi bem-sucedida.
FALSE
Falha na função. Para obter o código de erro, chame a função GetLastError .

Comentários

Use essa função para cancelar operações de execução prolongada. Por exemplo, chamar a função EvtNext pode teoricamente levar muito tempo devido à filtragem de milhares de registros de eventos. Chamar EvtCancel impediria a função EvtNext de processar mais registros de eventos. Observe que a função pode não ser capaz de interromper a operação imediatamente.

Você deve chamar a função EvtClose para fechar o identificador quando terminar.

O procedimento a seguir descreve como cancelar uma operação de execução prolongada.

Para cancelar uma operação de execução prolongada

  1. O Thread A chama uma operação de execução longa (por exemplo, a função EvtSeek ).
  2. O Thread B deseja cancelar e fechar todas as operações, portanto, o thread B chama a função EvtCancel .
  3. Em seguida, o Thread B aguarda a conclusão de todas as chamadas pendentes (sincronizando com o thread A). Como a função EvtCancel foi chamada, o thread A deve ser concluído logo após a chamada para o EvtCancel ser feita.
  4. Depois que o thread A tiver concluído totalmente a operação (EvtSeek), o thread B poderá fechar o identificador de resultado da consulta usando a função EvtClose .
A operação que está sendo interrompida retornará com um código de erro de ERROR_CANCELLED.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winevt.h
Biblioteca Wevtapi.lib
DLL Wevtapi.dll