Freigeben über


FltCancelIo-Funktion (fltkernel.h)

Die FltCancelIo-Routine bricht einen E/A-Vorgang ab.

Syntax

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parameter

[in] CallbackData

Zeiger auf die Rückrufdatenstruktur (FLT_CALLBACK_DATA) für den E/A-Vorgang.

Rückgabewert

FltCancelIo gibt TRUE zurück, wenn der E/A-Vorgang erfolgreich abgebrochen wurde. Andernfalls wird FALSE zurückgegeben.

Hinweise

Ein Minifiltertreiber, der einen E/A-Vorgang durch Aufrufen einer Routine wie FltPerformAsynchronousIo initiiert, kann den Vorgang durch Aufrufen von FltCancelIo abbrechen. Der Vorgang muss ein IRP-basierter E/A-Vorgang sein, er darf derzeit nicht in der eigenen Arbeitswarteschlange des Minifiltertreibers bereitgestellt und nicht abgeschlossen worden sein.

Wenn das IRP über eine Abbruchroutine verfügt, legt FltCancelIo das Abbruchbit des IRP fest und ruft die Abbruchroutine auf.

Wenn das IRP keine Abbruchroutine aufweist und die IRP daher nicht abgebrochen werden kann, legt FltCancelIo das Abbruchbit des IRP fest und gibt FALSE zurück. Das IRP sollte zu einem späteren Zeitpunkt abgebrochen werden, wenn er abgebrochen werden kann.

Wenn ein Minifiltertreiber, der den IRP-basierten E/A-Vorgang nicht initiiert hat , FltCancelIo aufruft, sind die Ergebnisse unvorhersehbar. Beispielsweise kann das IRP mit einem erfolgreichen NTSTATUS-Code abgeschlossen werden, obwohl dessen Cancel Bit festgelegt wurde.

FltCancelIo gibt FALSE zurück, wenn eine der folgenden Bedingungen zutrifft:

  • Der Vorgang ist kein IRP-basierter E/A-Vorgang.
  • Für den E/A-Vorgang ist keine Abbruchroutine angegeben.
  • Der E/A-Vorgang wurde bereits abgebrochen.
Verwenden Sie das Makro FLT_IS_IRP_OPERATION, um zu bestimmen, ob eine bestimmte Rückrufdatenstruktur einen IRP-basierten E/A-Vorgang darstellt.

Um eine Abbruchroutine für einen E/A-Vorgang anzugeben, rufen Sie FltSetCancelCompletion auf.

Um eine Abbruchroutine zu löschen, die für einen E/A-Vorgang festgelegt wurde, rufen Sie FltClearCancelCompletion auf.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (fltKernel.h einschließen)
Bibliothek FltMgr.lib
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile