FLT_CONTEXT_REGISTRATION-Struktur (fltkernel.h)
Die FLT_CONTEXT_REGISTRATION-Struktur wird verwendet, um Kontexttypen zu registrieren.
Syntax
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;
Member
ContextType
Der Typ des Kontexts. Dieser Member ist erforderlich und muss einer der folgenden Werte sein:
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 angibt, wie der Filter-Manager einen neuen Kontext aus einer Lookaside-Liste von Kontexten mit fester Größe zuordnet. Dieser Member kann null oder der folgende Wert sein.
Flag | Bedeutung |
---|---|
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | Wenn der Minifilter Kontexte mit fester Größe verwendet und dieses Flag angegeben wird, ordnet der Filter-Manager einen Kontext aus der Suchliste zu, wenn die Größe des Kontexts in der Suchliste größer oder gleich der angeforderten Größe ist. Andernfalls ordnet der Filter-Manager nur dann einen Kontext aus der Lookaside-Liste zu, wenn die Größe des Kontexts in der Suchliste der angeforderten Größe entspricht. |
ContextCleanupCallback
Ein Zeiger auf eine vom Minifilter definierte ContextCleanupCallback-Routine vom Typ PFLT_CONTEXT_CLEANUP_CALLBACK. Der Filter-Manager ruft diese Routine unmittelbar vor dem Löschen des Kontexts auf. Wenn der Minifilter keinen Arbeitsspeicher oder Zeiger auf sauber innerhalb des Kontexts aufweist, ist dieser Member optional und kann NULL sein.
Size
Die Größe des durch 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 dieser Member 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 aus einem bis vier 7-Bit-ASCII-Zeichen angegeben wird, wird in jedem Absturzabbild des systems angezeigt, das auftritt. Wenn das ContextAllocateCallback-ElementNULL ist, ist dieses Element erforderlich und darf nicht 0 sein.
ContextAllocateCallback
Zeiger auf eine vom Minifilter definierte ContextAllocateCallback-Routine vom Typ PFLT_CONTEXT_ALLOCATE_CALLBACK. Dieser Member ist optional und kann NULL sein. Wenn es nicht NULL ist, werden die Member Size und PoolTag ignoriert.
ContextFreeCallback
Ein Zeiger auf eine vom Minifilter definierte ContextFreeCallback-Routine vom Typ PFLT_CONTEXT_FREE_CALLBACK. Dieser Member ist optional und kann NULL sein. Wenn es nicht NULL ist, werden die Member Size und PoolTag ignoriert.
Reserved1
Ist für das System reserviert. Minifilter müssen diesen Member auf NULL festlegen.
Hinweise
Wenn ein Minifilter FltRegisterFilter aus seiner DriverEntry-Routine aufruft, muss er jeden von ihm verwendeten Kontexttyp registrieren.
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 Registrierungsparameter 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 einem ContextAllocateCallback-Member ohne NULL 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 bereitstellt, wird nur die erste verwendet. Die anderen werden ignoriert.
- Für jeden Kontexttyp kann nur eine FLT_CONTEXT_REGISTRATION-Struktur mit einem Size-Member FLT_VARIABLE_SIZED_CONTEXTS bereitgestellt werden.
- Für jeden Kontexttyp können maximal drei FLT_CONTEXT_REGISTRATION-Strukturen mit einem anderen Size-Member als FLT_VARIABLE_SIZED_CONTEXTS bereitgestellt werden.
Anforderungen
Anforderung | Wert |
---|---|
Header | fltkernel.h (fltkernel.h einschließen) |