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