Condividi tramite


Funzione EvtCancel (winevt.h)

Annulla tutte le operazioni in sospeso su un handle.

Sintassi

BOOL EvtCancel(
  EVT_HANDLE Object
);

Parametri

Object

Handle di cui si desidera annullare l'operazione. È possibile annullare le operazioni seguenti:

Per annullare le operazioni EvtClearLog, EvtExportLog, EvtQuery e EvtSubscribe , è necessario passare l'handle di sessione. Per specificare la sessione predefinita (sessione locale), impostare questo parametro su NULL.

Valore restituito

Codice/valore restituito Descrizione
TRUE
Funzione completata.
FALSE
La funzione non è riuscita. Per ottenere il codice di errore, chiamare la funzione GetLastError .

Commenti

Usare questa funzione per annullare le operazioni a esecuzione prolungata. Ad esempio, la chiamata alla funzione EvtNext potrebbe richiedere molto tempo a causa del filtro di migliaia di record di eventi. La chiamata di EvtCancel arresta la funzione EvtNext dall'elaborazione di ulteriori record di eventi. Si noti che la funzione potrebbe non essere in grado di arrestare immediatamente l'operazione.

Al termine, è necessario chiamare la funzione EvtClose per chiudere l'handle.

La procedura seguente descrive come annullare un'operazione a esecuzione prolungata.

Per annullare un'operazione a esecuzione prolungata

  1. Thread A chiama un'operazione a esecuzione prolungata, ad esempio la funzione EvtSeek .
  2. Il thread B vuole annullare e chiudere tutte le operazioni, quindi il thread B chiama la funzione EvtCancel .
  3. Il thread B attende quindi il completamento di tutte le chiamate in sospeso (eseguendo la sincronizzazione con il thread A). Poiché la funzione EvtCancel è stata chiamata, il thread A dovrebbe essere completato subito dopo che è stata effettuata la chiamata a EvtCancel .
  4. Dopo che il thread A ha completato completamente l'operazione (EvtSeek), il thread B può chiudere l'handle dei risultati della query usando la funzione EvtClose .
L'operazione arrestata restituirà un codice di errore di ERROR_CANCELLED.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winevt.h
Libreria Wevtapi.lib
DLL Wevtapi.dll