FltSetCancelCompletion-Funktion (fltkernel.h)
Ein Minifiltertreiber ruft FltSetCancelCompletion auf, um eine Abbruchroutine anzugeben, die aufgerufen werden soll, wenn ein bestimmter E/A-Vorgang abgebrochen wird.
Syntax
NTSTATUS FLTAPI FltSetCancelCompletion(
[in] PFLT_CALLBACK_DATA CallbackData,
[in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);
Parameter
[in] CallbackData
Zeiger auf die Rückrufdatenstruktur (FLT_CALLBACK_DATA) für den E/A-Vorgang. Bei dem Vorgang muss es sich um einen IRP-basierten E/A-Vorgang und nicht um einen Auslagerungs-E/A-Vorgang sein. Verwenden Sie das Makro FLT_IS_IRP_OPERATION , um zu bestimmen, ob eine bestimmte Rückrufdatenstruktur einen IRP-basierten E/A-Vorgang darstellt. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in] CanceledCallback
Zeiger auf eine vom Aufrufer bereitgestellte Abbruchroutine. Der Filter-Manager ruft diese Routine auf, wenn der durch CallbackData dargestellte E/A-Vorgang abgebrochen wird.
Diese Routine wird wie folgt deklariert:
typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
IN PFLT_CALLBACK_DATA CallbackData
);
CallbackData
Zeiger auf die FLT_CALLBACK_DATA-Struktur für den E/A-Vorgang.
Rückgabewert
FltSetCancelCompletion gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert zurück.
Hinweise
FltSetCancelCompletion gibt eine Abbruchroutine für einen IRP-basierten E/A-Vorgang an, der an eine Arbeitswarteschlange gesendet werden soll.
Minifiltertreiber rufen in der Regel FltSetCancelCompletion für einen E/A-Vorgang unmittelbar vor dem Aufrufen von FltQueueDeferredIoWorkItem auf, um den Vorgang in einer Arbeitswarteschlange zu posten.
Rufen Sie FltSetCancelCompletion nicht für E/A-Vorgänge auf, die mithilfe der FltCbdq-Xxx-Routinen an eine abbruchsichere Rückruf-Datenwarteschlange gesendet werden sollen.
Der Filter-Manager ruft die CanceledCallback-Routine auf, ohne die Abbruchsperre des Systems beizubehalten oder eine andere Synchronisierung durchzuführen. Jede erforderliche Synchronisierung muss vom Minifiltertreiber selbst bereitgestellt werden.
Um einen E/A-Vorgang abzubrechen, rufen Sie FltCancelIo auf.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | fltkernel.h (fltkernel.h einschließen) |
Bibliothek | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |