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.

Bemerkungen

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

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

Wenn die IRP keine Abbruchroutine aufweist und daher der IRP nicht abgebrochen werden kann, legt FltCancelIo das Cancel Bit 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, FltCancelIoaufruft, sind die Ergebnisse unvorhersehbar. Beispielsweise kann der IRP mit einem erfolgreichen NTSTATUS-Code abgeschlossen werden, obwohl sein 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 wird keine Abbruchroutine angegeben.
  • Der E/A-Vorgang wurde bereits abgebrochen.
Um festzustellen, ob eine bestimmte Rückrufdatenstruktur einen IRP-basierten E/A-Vorgang darstellt, verwenden Sie das FLT_IS_IRP_OPERATION Makro.

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

Rufen Sie FltClearCancelCompletionauf, um eine Abbruchroutine zu löschen, die für einen E/A-Vorgang festgelegt wurde.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include FltKernel.h)
Library FltMgr.lib
IRQL- <= DISPATCH_LEVEL

Siehe auch

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile-

FltSetCancelCompletion

FltWriteFile-