Freigeben über


FLT_OPERATION_REGISTRATION Struktur (fltkernel.h)

Die FLT_OPERATION_REGISTRATION-Struktur wird zum Registrieren von Rückrufroutinen des Vorgangs verwendet.

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;

Angehörige

MajorFunction

Hauptfunktionscode, der den Typ des E/A-Vorgangs angibt. Dieses Element ist erforderlich und kann nicht NULL-werden. Weitere Informationen zu zusätzlichen Vorgängen finden Sie unter FLT_PARAMETERS.

Flags

Bitmaske von Flags, die angeben, wann die Preoperation (PFLT_PRE_OPERATION_CALLBACK) und postoperation (PFLT_POST_OPERATION_CALLBACK) Rückrufroutinen für zwischengespeicherte E/A- oder Auslagerungs-E/A-Vorgänge aufgerufen werden sollen. Dieses Element ist optional und kann null sein.

Flagge Beschreibung
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Ein Minifilter legt dieses Kennzeichen für Lese- oder Schreibvorgänge fest, um anzugeben, dass seine Voroperations- und Postoperationsrückrufroutinen nicht für Auslagerungs-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 Kennzeichen für Lese- oder Schreibvorgänge fest, um anzugeben, dass seine Voroperations- und Postoperationsrückrufroutinen nicht für zwischengespeicherte E/A-Vorgänge aufgerufen werden sollen. Dieses Kennzeichen 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 Kennzeichen fest, sodass alle Vorgänge, die auf einem Nicht-DASD-Volumehandle ausgegeben wurden, ü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 Kennzeichen fest, sodass Lese- oder Schreibvorgänge, die weder zwischengespeichert noch Paging zwischengespeichert werden, übersprungen werden. Beachten Sie, dass der Rückruf des Minifilters für diesen Vorgang umgangen wird. Diese Kennzeichnung ist nur für IRP_MJ_READ- und IRP_MJ_WRITE Anforderungen relevant.

PreOperation

Zeiger auf eine PFLT_PRE_OPERATION_CALLBACK-typed routine, die als Preoperation Callback-Routine für diesen Typ von E/A-Vorgang registriert werden soll. Dieses Element ist optional und kann NULL-sein.

PostOperation

Zeiger auf eine PFLT_POST_OPERATION_CALLBACK-typed-Routine, die als Postoperation-Rückrufroutine für diesen Typ von E/A-Vorgang registriert werden soll. Dieses Element ist optional und kann NULL-sein.

Reserved1

Reserviert für die Systemverwendung. Minifilter müssen dieses Element auf NULL-festlegen.

Bemerkungen

Wenn ein Minifilter FltRegisterFilter aus seiner DriverEntry- Routine aufruft, kann er eine Preoperation-Rückrufroutine (PFLT_PRE_OPERATION_CALLBACK) und eine Postoperationsrückrufroutine (PFLT_POST_OPERATION_CALLBACK) für jeden Typ von E/A-Vorgängen registrieren, die verarbeitet werden 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 Registration Parameter 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 PreOperation- und PostOperation Member der Struktur an.

Ein Minifilter kann eine Voroperationsrückrufroutine für einen bestimmten Typ von E/A-Vorgängen registrieren, ohne einen Postoperationsrückruf zu registrieren und umgekehrt.

Dateisysteme erhalten keine IRP_MJ_POWER oder IRP_MJ_DEVICE_CHANGE Anforderungen. Minifilter können keine Voroperations- oder Postoperationsrückrufroutinen für diese Vorgänge registrieren.

Ein Minifilter kann keine Postoperationsrückrufroutine für IRP_MJ_SHUTDOWN registrieren.

Eine einzelne Voroperations- oder Postoperationsrückrufroutine kann verwendet werden, um mehr als einen Typ von E/A-Vorgängen 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)

Siehe auch

FLT_REGISTRATION

FltRegisterFilter-

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK