структура 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) |