CancelIoEx-Funktion

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 WINAPI CancelIoEx(
  _In_     HANDLE       hFile,
  _In_opt_ LPOVERLAPPED lpOverlapped
);

Parameter

hFile [in]

Ein Handle für die Datei.

lpOverlapped [in, optional]

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

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

Wenn dieser Parameter nicht NULL ist, werden nur die spezifischen E/A-Anforderungen, die für die Datei mit der angegebenen lpOverlapped-Überlappungsstruktur ausgegeben wurden, als abgebrochen markiert, was bedeutet, dass Sie eine oder mehrere Anforderungen abbrechen können, während die CancelIo-Funktion alle ausstehenden Anforderungen für ein 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 Aufrufprozess für das angegebene Dateihandle ausgegeben wurden, wurde erfolgreich angefordert. Die Anwendung darf die OVERLAPPED-Struktur , die den abgebrochenen E/A-Vorgängen zugeordnet ist, erst freigeben oder wiederverwenden, wenn sie abgeschlossen sind. Der Thread kann die GetOverlappedResult-Funktion verwenden, um zu bestimmen, wann die E/A-Vorgänge selbst abgeschlossen wurden.

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Rufen Sie die GetLastError-Funktion auf, um erweiterte Fehlerinformationen zu erhalten.

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 CancelIoEx-Funktion können Sie Anforderungen in anderen Threads als dem aufrufenden Thread abbrechen. Die CancelIo-Funktion bricht nur Anforderungen im selben Thread ab, der die CancelIo-Funktion 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 CancelIoEx-Funktion diese zum Abbruch. 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 CancelIoEx-Funktion wartet nicht, bis alle abgebrochenen Vorgänge abgeschlossen sind.

Wenn das Dateihandle einem Abschlussport zugeordnet ist, wird ein E/A-Vervollständigungspaket nicht in die Warteschlange des Ports eingereiht, wenn ein synchroner Vorgang erfolgreich abgebrochen wurde. Bei asynchronen Vorgängen, die noch ausstehen, wird beim Abbruchvorgang ein E/A-Vervollständigungspaket in die Warteschlange gestellt.

Der abgebrochene Vorgang wird mit einem von drei Status abgeschlossen. Sie müssen den Abschluss status überprüfen, um den Abschlusszustand zu bestimmen. Die drei Status sind:

  • 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 GetLastError-Funktion gibt ERROR_OPERATION_ABORTED zurück.
  • Der Vorgang ist mit einem anderen Fehler fehlgeschlagen. Die GetLastError-Funktion gibt den relevanten Fehlercode zurück.

In Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
Server Message Block (SMB) 3.0-Protokoll
Ja
SMB 3.0 Transparent Failover (TFO)
Ja
SMB 3.0 mit Dateifreigaben für horizontales Skalieren (SO)
Ja
Freigegebenes Clustervolume-Dateisystem (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]
Header
IoAPI.h (einschließlich Windows.h);
WinBase.h unter Windows Server 2008 R2, Windows 7, Windows Server 2008 und Windows Vista (einschließlich Windows.h)
Bibliothek
Kernel32.lib
DLL
Kernel32.dll

Siehe auch

CancelIo

CancelSynchronousIo

Abbrechen ausstehender E/A-Vorgänge

Dateiverwaltungsfunktionen

Synchrone und asynchrone E/A