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.
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 |