Funzione CancelIoEx (ioapiset.h)
Contrassegna eventuali 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 creato dall'operazione di I/O.
Sintassi
BOOL CancelIoEx(
[in] HANDLE hFile,
[in, optional] LPOVERLAPPED lpOverlapped
);
Parametri
[in] hFile
Handle per il file.
[in, optional] lpOverlapped
Puntatore a una struttura di dati OVERLAPPED che contiene i dati usati per l'I/O asincrona.
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 rilasciate per il file con la struttura sovrapposta lpOverlapped specificata vengono contrassegnate come annullate, ovvero è possibile annullare una o più richieste, mentre la funzione CancelIo annulla tutte le richieste in sospeso in un handle di file.
Valore restituito
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 di chiamata 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 CancelIoEx consente di annullare le richieste nei thread diversi dal thread chiamante. La funzione CancelIo annulla solo le richieste nello stesso thread che ha chiamato la funzione CancelIo . CancelIoEx annulla solo I/O in sospeso nell'handle, 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 CancelIoEx 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 CancelIoEx 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 annulla 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:
- L'operazione è stata completata normalmente. Ciò può verificarsi anche se l'operazione è stata annullata, perché la richiesta di annullamento potrebbe non essere stata inviata in 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.
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | Sì |
Failover trasparente SMB 3.0 (TFO) | Sì |
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) | Sì |
File system del volume condiviso del cluster (CsvFS) | Sì |
File system resiliente (ReFS) | Sì |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | ioapiset.h (includere Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |