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) |