Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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) |