Freigeben über


CancelIoEx-Funktion (ioapiset.h)

Markiert alle ausstehenden E/A-Vorgänge für das angegebene Dateihandle. Die Funktion bricht nur E/A-Vorgänge im aktuellen Prozess ab, unabhängig davon, welcher Thread den E/A-Vorgang erstellt hat.

Syntax

BOOL CancelIoEx(
  [in]           HANDLE       hFile,
  [in, optional] LPOVERLAPPED lpOverlapped
);

Parameter

[in] hFile

Ein Handle zur Datei.

[in, optional] lpOverlapped

Ein Zeiger auf eine Datenstruktur OVERLAPPED, die die Daten enthält, die für asynchrone E/A-Vorgänge verwendet werden.

Wenn dieser Parameter NULL ist, werden alle E/A-Anforderungen für den Parameter hFile abgebrochen.

Wenn dieser Parameter nicht NULL ist, werden nur die spezifischen E/A-Anforderungen, die für die Datei mit der angegebenen Überlappungsstruktur lpOverlapped ausgegeben wurden, als abgebrochen markiert, was bedeutet, dass Sie mindestens eine Anforderung abbrechen können, während die Funktion CancelIo alle ausstehenden Anforderungen an einem Dateihandle abbricht.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null. Der Abbruchvorgang für alle ausstehenden E/A-Vorgänge, die vom aufrufenden Prozess für das angegebene Dateihandle ausgegeben wurden, wurde erfolgreich angefordert. Die Anwendung darf die Struktur OVERLAPPED, die den abgebrochenen E/A-Vorgängen zugeordnet ist, erst wiederverwenden, wenn sie abgeschlossen sind. Der Thread kann die Funktion GetOverlappedResult verwenden, um zu bestimmen, wann die E/A-Vorgänge selbst abgeschlossen wurden.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie die Funktion GetLastError auf.

Wenn diese Funktion keine Anforderung zum Abbrechen finden kann, ist der Rückgabewert 0 (null), und GetLastError gibt ERROR_NOT_FOUND zurück.

Bemerkungen

Mit der Funktion CancelIoEx können Sie Anforderungen in anderen Threads als dem aufrufenden Thread abbrechen. Die Funktion CancelIo bricht nur Anforderungen im selben Thread ab, der die Funktion CancelIo aufgerufen hat. CancelIoEx bricht nur ausstehende E/A-Vorgänge auf dem Handle ab, der Status des Handles wird nicht geändert. Dies bedeutet, dass Sie sich nicht auf den Status des Handles verlassen können, da Sie nicht wissen können, ob der Vorgang erfolgreich abgeschlossen oder abgebrochen wurde.

Wenn E/A-Vorgänge für das angegebene Dateihandle ausstehen, markiert die Funktion CancelIoEx diese zum Abbrechen. Die meisten Arten von Vorgängen können sofort abgebrochen werden. Andere Vorgänge können bis zum Abschluss fortgesetzt werden, bevor sie tatsächlich abgebrochen werden und der Aufrufer benachrichtigt wird. Die Funktion CancelIoEx wartet nicht, bis alle abgebrochenen Vorgänge abgeschlossen sind.

Wenn das Dateihandle einem Abschlussport zugeordnet ist, wird ein E/A-Abschlusspaket nicht an den Port in die Warteschlange gestellt, wenn ein synchroner Vorgang erfolgreich abgebrochen wurde. Bei asynchronen Vorgängen, die noch ausstehen, stellt der Abbruchvorgang ein E/A-Abschlusspaket in die Warteschlange.

Der abgebrochene Vorgang wird mit einem von drei Status abgeschlossen. Sie müssen die Abschlussstatus überprüfen, um den Abschlussstatus zu ermitteln. Die drei Status sind wie folgt:

  • Der Vorgang wurde normal abgeschlossen. Dies kann auch auftreten, wenn der Vorgang abgebrochen wurde, da die Abbruchanforderung möglicherweise nicht rechtzeitig übermittelt wurde, um den Vorgang abzubrechen.
  • Der Vorgang wurde abgebrochen. Die Funktion GetLastError gibt ERROR_OPERATION_ABORTED zurück.
  • Der Vorgang ist mit einem anderen Fehler fehlgeschlagen. Die Funktion GetLastError gibt den relevanten Fehlercode zurück.
Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.
Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) Ja
SMB 3.0 Transparent Failover (TFO) Ja
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) Ja
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile ioapiset.h (Einschließen von Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CancelIo

CancelSynchronousIo

Abbrechen ausstehender E/A-Vorgänge

Dateiverwaltungsfunktionen

Synchrone und asynchrone E/A