Condividi tramite


Funzione NtCancelIoFileEx

Contrassegna tutte le operazioni di I/O in sospeso per l'handle di file specificato. La funzione annulla solo le operazioni di I/O nel processo corrente, indipendentemente dal thread che ha creato l'operazione di I/O.

Nota

Questa funzione è la modalità utente equivalente alla funzione CancelIoEX Win32.

Sintassi

BOOL WINAPI NtCancelIoFileEx(
  _In_     HANDLE       hFile,
  _In_opt_ LPOVERLAPPED lpOverlapped
);

Parametri

hFile [in]

Handle per il file.

lpOverlapped [in, facoltativo]

Puntatore a una struttura di dati OVERLAPPED che contiene i dati usati per le operazioni di I/O asincrone.

Se questo parametro è NULL, tutte le richieste di I/O per il parametro hFile vengono annullate.

Se questo parametro non è NULL, solo le richieste di I/O specifiche inviate per il file con la struttura sovrapposta lpOverlapped specificata vengono contrassegnate come annullate, ovvero è possibile annullare una o più richieste, mentre la funzione NtCancelIoFile annulla tutte le richieste in sospeso in un handle di file.

Restituisce

Se la funzione ha esito positivo, il valore restituito è diverso da zero. L'operazione di annullamento per tutte le operazioni di I/O in sospeso rilasciate dal processo chiamante per l'handle di file specificato è stata richiesta correttamente. L'applicazione non deve liberare o riutilizzare la struttura OVERLAPPED associata alle operazioni di I/O annullate fino al completamento. Il thread può usare la funzione GetOverlappedResult per determinare quando sono state completate le operazioni di I/O.

Se la funzione ha esito negativo, il valore restituito è 0 (zero). Per ottenere informazioni sull'errore estese, chiamare la funzione GetLastError .

Se questa funzione non riesce a trovare una richiesta di annullamento, il valore restituito è 0 (zero) e GetLastError restituisce ERROR_NOT_FOUND.

Commenti

La funzione NTCancelIoFileEx consente di annullare le richieste nei thread diversi dal thread chiamante. La funzione NtCancelIoFile annulla solo le richieste nello stesso thread che ha chiamato la funzione NtCancelIoFile . NtCancelIoFileEx annulla solo le operazioni di I/O in sospeso nell'handle, ma non modifica lo stato dell'handle; Ciò significa che non è possibile basarsi sullo stato dell'handle perché non è possibile sapere se l'operazione è stata completata correttamente o annullata.

Se sono in corso operazioni di I/O in sospeso per l'handle di file specificato, la funzione NtCancelIoFileEx li contrassegna per l'annullamento. La maggior parte dei tipi di operazioni può essere annullata immediatamente; altre operazioni possono continuare verso il completamento prima che vengano effettivamente annullate e il chiamante riceve una notifica. La funzione NtCancelIoFileEx non attende il completamento di tutte le operazioni annullate.

Se l'handle di file è associato a una porta di completamento, un pacchetto di completamento di I/O non viene accodato alla porta se un'operazione sincrona viene annullata correttamente. Per le operazioni asincrone ancora in sospeso, l'operazione di annullamento accoderà un pacchetto di completamento di I/O.

L'operazione annullata viene completata con uno dei tre stati; è necessario controllare lo stato di completamento per determinare lo stato di completamento. I tre stati sono:

  • Operazione completata normalmente. Ciò può verificarsi anche se l'operazione è stata annullata, perché la richiesta di annullamento potrebbe non essere stata inviata nel tempo per annullare l'operazione.
  • L'operazione è stata annullata. La funzione GetLastError restituisce ERROR_OPERATION_ABORTED.
  • L'operazione non è riuscita con un altro errore. La funzione GetLastError restituisce il codice di errore pertinente.

In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0

Failover trasparente SMB 3.0 (TFO)

SMB 3.0 con condivisioni file di scalabilità orizzontale (SO)

File system del volume condiviso cluster (CsvFS)

Resilient File System (ReFS)

Requisiti

Requisito Valore
Intestazione
ntioapi.h
Libreria
ntdll.lib

Vedi anche

NtCancelIoFile