FLT_CONTEXT_REGISTRATION Struktur (fltkernel.h)
Die FLT_CONTEXT_REGISTRATION-Struktur wird verwendet, um Kontexttypen zu registrieren.
typedef struct _FLT_CONTEXT_REGISTRATION {
FLT_CONTEXT_TYPE ContextType;
FLT_CONTEXT_REGISTRATION_FLAGS Flags;
PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback;
SIZE_T Size;
ULONG PoolTag;
PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback;
PVOID Reserved1;
} FLT_CONTEXT_REGISTRATION, *PFLT_CONTEXT_REGISTRATION;
ContextType
Der Kontexttyp. Dieses Element ist erforderlich und muss einen der folgenden Werte aufweisen:
FLT_FILE_CONTEXT (nur Windows Vista und höher).)
FLT_INSTANCE_CONTEXT
FLT_STREAM_CONTEXT
FLT_STREAMHANDLE_CONTEXT
FLT_SECTION_CONTEXT (nur Windows 8 und höher).)
FLT_TRANSACTION_CONTEXT (nur Windows Vista und höher.)
FLT_VOLUME_CONTEXT
Flags
Eine Bitmaske von Flags, die angeben, wie der Filter-Manager einen neuen Kontext aus einer Nachschlageliste mit Kontexten fester Größe zuweist. Dieses Element kann null oder der folgende Wert sein.
Flagge | Bedeutung |
---|---|
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | Wenn der Minifilter Kontexte mit fester Größe verwendet und dieses Flag angegeben ist, weist der Filter-Manager einen Kontext aus der Lookaside-Liste zu, wenn die Größe des Kontexts in der Lookaside-Liste größer oder gleich der angeforderten Größe ist. Andernfalls weist der Filter-Manager einen Kontext aus der Lookaside-Liste nur zu, wenn die Größe des Kontexts in der Lookaside-Liste der angeforderten Größe entspricht. |
ContextCleanupCallback
Ein Zeiger auf einen minifilterdefiniert ContextCleanupCallback Routine vom Typ PFLT_CONTEXT_CLEANUP_CALLBACK. Der Filter-Manager ruft diese Routine unmittelbar auf, bevor er den Kontext löscht. Wenn der Minifilter keinen Speicher oder Zeiger zum Bereinigen innerhalb des Kontexts hat, ist dieses Element optional und kann NULL-sein.
Size
Die Größe des minifilter-definierten Teils des Kontexts in Bytes, wenn der Minifilter Kontexte mit fester Größe verwendet. Null ist ein gültiger Größenwert. Wenn der Minifilter Kontexte mit variabler Größe verwendet, ist dieses Element erforderlich und muss auf FLT_VARIABLE_SIZED_CONTEXTS festgelegt werden.
PoolTag
Ein Pooltagwert, der für den Kontext verwendet werden soll. Dieses Tag, das als Zeichenfolge von 1 bis vier 7-Bit-ASCII-Zeichen angegeben wird, wird in jedem Absturzabbild des systems angezeigt, das auftritt. Wenn das ContextAllocateCallback Member NULL-ist, ist dieses Element erforderlich und darf nicht null sein.
ContextAllocateCallback
Zeiger auf einen minifilterdefinierten ContextAllocateCallback Routine vom Typ PFLT_CONTEXT_ALLOCATE_CALLBACK. Dieses Element ist optional und kann NULL-sein. Wenn es nicht NULL-ist, werden die elemente Size und PoolTag ignoriert.
ContextFreeCallback
Ein Zeiger auf einen minifilterdefiniert ContextFreeCallback Routine vom Typ PFLT_CONTEXT_FREE_CALLBACK. Dieses Element ist optional und kann NULL-sein. Wenn es nicht NULL-ist, werden die elemente Size und PoolTag ignoriert.
Reserved1
Reserviert für die Systemverwendung. Minifilter müssen dieses Element auf NULL-festlegen.
Wenn ein Minifilter FltRegisterFilter aus der DriverEntry--Routine aufruft, muss er jeden kontexttyp registrieren, den er verwendet.
Um diese Kontexttypen zu registrieren, erstellt der Minifilter ein Array mit variabler Länge von FLT_CONTEXT_REGISTRATION Strukturen und speichert einen Zeiger auf das Array im ContextRegistration Member der FLT_REGISTRATION Struktur, die der Minifilter als Registration Parameter von FltRegisterFilterübergibt. Das letzte Element dieses Arrays muss {FLT_CONTEXT_END} sein.
Für jeden Kontexttyp, den der Minifilter verwendet, muss der Minifilter gemäß den folgenden Regeln mindestens eine FLT_CONTEXT_REGISTRATION Struktur bereitstellen:
- Wenn der Minifilter eine FLT_CONTEXT_REGISTRATION Struktur mit einer nichtNULL ContextAllocateCallback Member bereitstellt, kann er keine zusätzlichen FLT_CONTEXT_REGISTRATION Strukturen für diesen Kontexttyp bereitstellen.
- Wenn der Minifilter zwei oder mehr identische FLT_CONTEXT_REGISTRATION Strukturen liefert, wird nur der erste verwendet. Die anderen werden ignoriert.
- Für jeden Kontexttyp kann nur eine FLT_CONTEXT_REGISTRATION Struktur mit einem Size Member von FLT_VARIABLE_SIZED_CONTEXTS bereitgestellt werden.
- Nicht mehr als drei FLT_CONTEXT_REGISTRATION Strukturen mit einem Size Member als FLT_VARIABLE_SIZED_CONTEXTS können für jeden Kontexttyp bereitgestellt werden.
Anforderung | Wert |
---|---|
Header- | fltkernel.h (include Fltkernel.h) |