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

Weitere Informationen

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem