структура FLT_CONTEXT_REGISTRATION (fltkernel.h)

Структура FLT_CONTEXT_REGISTRATION используется для регистрации типов контекста.

Синтаксис

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

Тип контекста. Этот элемент является обязательным и должен иметь одно из следующих значений:

FLT_FILE_CONTEXT (только Для Windows Vista и более поздних версий).

FLT_INSTANCE_CONTEXT

FLT_STREAM_CONTEXT

FLT_STREAMHANDLE_CONTEXT

FLT_SECTION_CONTEXT (только Windows 8 и более поздних версий).

FLT_TRANSACTION_CONTEXT (только Windows Vista и более поздних версий).

FLT_VOLUME_CONTEXT

Flags

Битовая маска флагов, указывающая, как диспетчер фильтров выделяет новый контекст из списка контекстов фиксированного размера. Этот элемент может быть равен нулю или следующему значению.

Flag Значение
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH Если мини-фильтр использует контексты фиксированного размера и указан этот флаг, диспетчер фильтров выделяет контекст из списка lookaside, если размер контекста в списке lookaside больше или равен запрошенного размера. В противном случае диспетчер фильтров выделяет контекст из списка lookaside, только если размер контекста в списке lookaside равен запрошенному размеру.

ContextCleanupCallback

Указатель на определяемую минифильтром подпрограмму ContextCleanupCallback типа PFLT_CONTEXT_CLEANUP_CALLBACK. Диспетчер фильтров вызывает эту подпрограмму непосредственно перед удалением контекста. Если минифильтр не имеет памяти или указателей для очистки в контексте, этот элемент является необязательным и может иметь значение NULL.

Size

Размер в байтах определенной минифильтром части контекста, если минифильтр использует контексты фиксированного размера. Ноль является допустимым значением размера. Если мини-фильтр использует контексты переменной величины, этот элемент является обязательным и должен иметь значение FLT_VARIABLE_SIZED_CONTEXTS.

PoolTag

Значение тега пула, используемое для контекста. Этот тег, который указывается в виде строки из одного-четырех 7-разрядных символов ASCII, отображается в любом аварийном дампе системы. Если элемент ContextAllocateCallback имеет значение NULL, он является обязательным и не может быть равен нулю.

ContextAllocateCallback

Указатель на определяемую минифильтром подпрограмму ContextAllocateCallback типа PFLT_CONTEXT_ALLOCATE_CALLBACK. Этот элемент является необязательным и может иметь значение NULL. Если значение не равно NULL, элементы Size и PoolTag игнорируются.

ContextFreeCallback

Указатель на определяемую минифильтром подпрограмму ContextFreeCallback типа PFLT_CONTEXT_FREE_CALLBACK. Этот элемент является необязательным и может иметь значение NULL. Если значение не равно NULL, элементы Size и PoolTag игнорируются.

Reserved1

Зарезервировано для системного использования. Минифильтры должны устанавливать для этого элемента значение NULL.

Комментарии

Когда мини-фильтр вызывает FltRegisterFilter из своей подпрограммы DriverEntry , он должен зарегистрировать каждый тип контекста, который он использует.

Чтобы зарегистрировать эти типы контекста, минифильтр создает массив переменной длины FLT_CONTEXT_REGISTRATION структур и сохраняет указатель на массив в элементе ContextRegistrationструктуры FLT_REGISTRATION , которую минифильтр передает в качестве параметра Registrationдля FltRegisterFilter. Последним элементом этого массива должен быть {FLT_CONTEXT_END}.

Для каждого типа контекста, используемого минифильтром, минифильтр должен предоставить по крайней мере одну структуру FLT_CONTEXT_REGISTRATION в соответствии со следующими правилами:

  • Если минифильтр предоставляет структуру FLT_CONTEXT_REGISTRATION с ненулевым элементом ContextAllocateCallback, он не может предоставить дополнительные структуры FLT_CONTEXT_REGISTRATION для этого типа контекста.
  • Если минифильтр предоставляет две или более идентичных FLT_CONTEXT_REGISTRATION структур, будет использоваться только первая. Остальные будут игнорироваться.
  • Для каждого типа контекста можно указать только одну структуру FLT_CONTEXT_REGISTRATION с элементом Size FLT_VARIABLE_SIZED_CONTEXTS.
  • Для каждого типа контекста можно указать не более трех FLT_CONTEXT_REGISTRATION структур с элементом Size , отличным от FLT_VARIABLE_SIZED_CONTEXTS.

Требования

Требование Значение
Заголовок fltkernel.h (включая Fltkernel.h)

См. также раздел

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK