Share via


FLT_OPERATION_REGISTRATION-Struktur (fltkernel.h)

Die FLT_OPERATION_REGISTRATION-Struktur wird verwendet, um Rückrufroutinen für Vorgänge zu registrieren.

Syntax

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

Member

MajorFunction

Hauptfunktionscode, der den Typ des E/A-Vorgangs angibt. Dieser Member ist erforderlich und darf nicht NULL sein. Weitere Informationen zu zusätzlichen Vorgängen finden Sie unter FLT_PARAMETERS.

Flags

Bitmaske von Flags, die angeben, wann die Rückrufroutinen preoperation (PFLT_PRE_OPERATION_CALLBACK) und Postoperation (PFLT_POST_OPERATION_CALLBACK) für zwischengespeicherte E/A- oder Paging-E/A-Vorgänge aufgerufen werden sollen. Dieser Member ist optional und kann null sein.

Flag Beschreibung
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Ein Minifilter legt dieses Flag für Lese- oder Schreibvorgänge fest, um anzugeben, dass die Rückrufroutinen vor und nach der Operation nicht für Paging-E/A-Vorgänge aufgerufen werden sollen. Dieses Flag gilt nur für IRP-basierte E/A-Vorgänge. Sie wird für E/A-Vorgänge ignoriert, die nicht IRP-basiert sind.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) Ein Minifilter legt dieses Flag für Lese- oder Schreibvorgänge fest, um anzugeben, dass die Rückrufroutinen vor und nach der Operation nicht für zwischengespeicherte E/A-Vorgänge aufgerufen werden sollen. Dieses Flag gilt für schnelle E/A sowie IRP-basierte Lese- und Schreibvorgänge, da alle schnellen E/A-Vorgänge zwischengespeichert werden.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) Ein Minifilter legt dieses Flag fest, sodass alle Vorgänge, die für ein Nicht-DASD-Volumehandle ausgegeben werden, übersprungen werden. Beachten Sie, dass der Rückruf des Minifilters für diesen Vorgang umgangen wird.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) Ein Minifilter legt dieses Flag so fest, dass Lese- oder Schreibvorgänge, die weder zwischengespeichert noch pagingt werden, übersprungen werden. Beachten Sie, dass der Rückruf des Minifilters für diesen Vorgang umgangen wird. Dieses Flag ist nur für IRP_MJ_READ- und IRP_MJ_WRITE-Anforderungen relevant.

PreOperation

Zeiger auf eine PFLT_PRE_OPERATION_CALLBACK typisierte Routine, die als Voroperationsrückrufroutine für diesen Typ von E/A-Vorgängen registriert werden soll. Dieser Member ist optional und kann NULL sein.

PostOperation

Zeiger auf eine PFLT_POST_OPERATION_CALLBACK typisierte Routine, die als Rückrufroutine nach der Operation für diesen Typ von E/A-Vorgängen registriert werden soll. Dieser Member ist optional und kann NULL sein.

Reserved1

Ist für das System reserviert. Minifilter müssen diesen Member auf NULL festlegen.

Hinweise

Wenn ein Minifilter FltRegisterFilter über seine DriverEntry-Routine aufruft, kann er eine PFLT_PRE_OPERATION_CALLBACK-Routine (Preoperation Callback) und eine Postoperation-Rückrufroutine (PFLT_POST_OPERATION_CALLBACK) für jeden Typ von E/A-Vorgängen registrieren, den er behandeln muss.

Um diese Rückrufroutinen zu registrieren, erstellt der Minifilter ein Array mit variabler Länge von FLT_OPERATION_REGISTRATION Strukturen und speichert einen Zeiger auf das Array im OperationRegistration-Member der FLT_REGISTRATION-Struktur , die der Minifilter als Registrierungsparameter von FltRegisterFilter übergibt. Das letzte Element dieses Arrays muss {IRP_MJ_OPERATION_END}sein.

Der Minifilter muss eine separate FLT_OPERATION_REGISTRATION-Struktur für jeden Typ von E/A-Vorgängen erstellen, den er verarbeitet. In dieser Struktur gibt der Minifilter die Einstiegspunkte seiner Rückrufroutinen in den Membern PreOperation und PostOperation der Struktur an.

Ein Minifilter kann eine Preoperation-Rückrufroutine für einen bestimmten E/A-Vorgangstyp registrieren, ohne einen Postoperationsrückruf zu registrieren und umgekehrt.

Dateisysteme empfangen keine IRP_MJ_POWER- oder IRP_MJ_DEVICE_CHANGE-Anforderungen. Minifilter können keine Rückrufroutinen für preoperation oder postoperation für diese Vorgänge registrieren.

Ein Minifilter kann keine Rückrufroutine nach der Operation für IRP_MJ_SHUTDOWN registrieren.

Eine einzelne Preoperation- oder Postoperation-Rückrufroutine kann verwendet werden, um mehrere E/A-Vorgänge zu verarbeiten. Die Rückrufroutine muss jedoch für jeden E/A-Vorgangstyp separat registriert werden.

Anforderungen

Anforderung Wert
Header fltkernel.h (include Fltkernel.h)

Weitere Informationen

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK