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)

Weitere Informationen

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK