Freigeben über


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. Der Vorgang muss ein IRP-basierter E/A-Vorgang sein und darf kein Auslagerungs-E/A-Vorgang sein. Um festzustellen, ob eine bestimmte Rückrufdatenstruktur einen IRP-basierten E/A-Vorgang darstellt, verwenden Sie das FLT_IS_IRP_OPERATION Makro. Dieser Parameter ist erforderlich und kann nicht NULL-werden.

[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 entsprechenden NTSTATUS-Wert zurück.

Bemerkungen

FltSetCancelCompletion gibt eine Abbruchroutine für einen IRP-basierten E/A-Vorgang an, der in eine Arbeitswarteschlange gepostet werden soll.

Minifiltertreiber rufen in der Regel FltSetCancelCompletion für einen E/A-Vorgang unmittelbar vor dem Aufrufen FltQueueDeferredIoWorkItem- auf, um den Vorgang in einer Arbeitswarteschlange zu posten.

Rufen Sie nicht FltSetCancelCompletion- für alle E/A-Vorgänge auf, die mithilfe der FltCbdqXxx- Routinen in eine abbruchsichere Rückrufdatenwarteschlange gepostet werden sollen.

Der Filter-Manager ruft die CanceledCallback Routine auf, ohne die Drehungssperre des Systems zu halten oder eine andere Synchronisierung durchzuführen. Jede erforderliche Synchronisierung muss vom Minifiltertreiber selbst bereitgestellt werden.

Rufen Sie FltCancelIoauf, um einen E/A-Vorgang abzubrechen.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= DISPATCH_LEVEL

Siehe auch

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem-