FLT_REGISTRATION структура (fltkernel.h)
Структура FLT_REGISTRATION передается в качестве параметра в FltRegisterFilter.
Синтаксис
typedef struct _FLT_REGISTRATION {
USHORT Size;
USHORT Version;
FLT_REGISTRATION_FLAGS Flags;
const FLT_CONTEXT_REGISTRATION *ContextRegistration;
const FLT_OPERATION_REGISTRATION *OperationRegistration;
PFLT_FILTER_UNLOAD_CALLBACK FilterUnloadCallback;
PFLT_INSTANCE_SETUP_CALLBACK InstanceSetupCallback;
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK InstanceQueryTeardownCallback;
PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownStartCallback;
PFLT_INSTANCE_TEARDOWN_CALLBACK InstanceTeardownCompleteCallback;
PFLT_GENERATE_FILE_NAME GenerateFileNameCallback;
PFLT_NORMALIZE_NAME_COMPONENT NormalizeNameComponentCallback;
PFLT_NORMALIZE_CONTEXT_CLEANUP NormalizeContextCleanupCallback;
PFLT_TRANSACTION_NOTIFICATION_CALLBACK TransactionNotificationCallback;
PFLT_NORMALIZE_NAME_COMPONENT_EX NormalizeNameComponentExCallback;
PFLT_SECTION_CONFLICT_NOTIFICATION_CALLBACK SectionNotificationCallback;
} FLT_REGISTRATION, *PFLT_REGISTRATION;
Члены
Size
Размер структуры FLT_REGISTRATION в байтах. Драйверы минифильтра должны задать для этого элемента значение sizeof(FLT_REGISTRATION).
Version
Уровень редакции структуры FLT_REGISTRATION. Драйверы мини-фильтра должны задать для этого элемента значение FLT_REGISTRATION_VERSION.
Flags
Битовая маска флагов регистрации минифильтра. Этот элемент может иметь значение NULL или сочетание следующего.
ContextRegistration
Массив FLT_CONTEXT_REGISTRATION структур переменной длины, по одному для каждого типа контекста, используемого минифильтром. Последним элементом массива должен быть {FLT_CONTEXT_END}. Этот элемент является необязательным и может иметь значение NULL.
OperationRegistration
Массив FLT_OPERATION_REGISTRATION структур переменной длины, по одному для каждого типа ввода-вывода, для которого минифильтр регистрирует процедуры обратного вызова перед операцией (PFLT_PRE_OPERATION_CALLBACK) и после операции (PFLT_POST_OPERATION_CALLBACK). Последним элементом в массиве должен быть {IRP_MJ_OPERATION_END}. Этот элемент является необязательным и может иметь значение NULL.
FilterUnloadCallback
Указатель на подпрограмму типа PFLT_FILTER_UNLOAD_CALLBACK регистрироваться как подпрограмма FilterUnloadCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL. Обратите внимание, что если для этой подпрограммы задано значение NULL , то выгрузить фильтр невозможно.
InstanceSetupCallback
Указатель на подпрограмму типа PFLT_INSTANCE_SETUP_CALLBACK для регистрации в качестве подпрограммы InstanceSetupCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL. Обратите внимание, что если для этой подпрограммы задано значение NULL , вложение всегда выполняется.
InstanceQueryTeardownCallback
Указатель на подпрограмму типа PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK регистрироваться как подпрограмма InstanceQueryTeardownCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL. Обратите внимание, что если для этой подпрограммы задано значение NULL , экземпляры никогда не будут отсоединяться вручную.
InstanceTeardownStartCallback
Указатель на подпрограмму типа PFLT_INSTANCE_TEARDOWN_CALLBACK регистрировать как подпрограмму InstanceTeardownStartCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
InstanceTeardownCompleteCallback
Указатель на подпрограмму типа PFLT_INSTANCE_TEARDOWN_CALLBACK для регистрации в качестве подпрограммы InstanceTeardownCompleteCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
GenerateFileNameCallback
Указатель на подпрограмму типа PFLT_GENERATE_FILE_NAME регистрировать как подпрограмму GenerateFileNameCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
NormalizeNameComponentCallback
Указатель на подпрограмму типа PFLT_NORMALIZE_NAME_COMPONENT регистрироваться как подпрограмма NormalizeNameComponentCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
NormalizeContextCleanupCallback
Указатель на подпрограмму типа PFLT_NORMALIZE_CONTEXT_CLEANUP регистрироваться как подпрограмма NormalizeContextCleanUpCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
TransactionNotificationCallback
(Только Windows Vista и более поздних версий.) Указатель на подпрограмму типа PFLT_TRANSACTION_NOTIFICATION_CALLBACK для регистрации в качестве подпрограммы TransactionNotificationCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL.
NormalizeNameComponentExCallback
(Только Windows Vista и более поздних версий.) Указатель на подпрограмму типа PFLT_NORMALIZE_NAME_COMPONENT_EX регистрироваться как подпрограмма NormalizeNameComponentExCallback драйвера минифильтра. Этот элемент является необязательным и может иметь значение NULL.
По сравнению с подпрограммой обратного вызова NormalizeNameComponentCallback подпрограмма обратного вызова NormalizeNameComponentExCallback поддерживает дополнительный параметр объекта файла FileObject (типа PFILE_OBJECT). Драйвер минифильтра может использовать этот параметр для получения дополнительных сведений, например сведений, предоставляемых структурой TXN_PARAMETER_BLOCK .
Драйвер мини-фильтра может одновременно задать для элементов NormalizeNameComponentCallback и NormalizeNameComponentExCallbackзначение NULL; однако драйвер минифильтра поставщика имен должен зарегистрировать подпрограмму обратного вызова NormalizeNameComponentCallback или NormalizeNameComponentExCallback либо оба метода. Например, драйвер минифильтра поставщика имен, который не используется для дополнительного параметра FileObject , может задать для члена NormalizeNameComponentExCallbackзначение NULL и предоставить только подпрограмму обратного вызова NormalizeNameComponentCallback .
Драйвер мини-фильтра может предоставлять как обратный вызов NormalizeNameComponentCallback , так и обратный вызов NormalizeNameComponentExCallback . В этом случае, начиная с Windows Vista, диспетчер фильтров будет использовать только обратный вызов NormalizeNameComponentExCallback ; Для операционных систем Windows до Windows Vista диспетчер фильтров будет использовать только обратный вызов NormalizeNameComponentCallback . Это позволяет запускать один и тот же двоичный файл драйвера минифильтра во всех версиях операционной системы.
SectionNotificationCallback
Указатель на подпрограмму типа PFLT_SECTION_CONFLICT_NOTIFICATION_CALLBACK для регистрации в качестве подпрограммы SectionNotificationCallback мини-фильтра. Этот элемент является необязательным и может иметь значение NULL. Этот обратный вызов вызывается для уведомлений об ошибках ввода-вывода для разделов, созданных с помощью FltCreateSectionForDatascan.
Комментарии
Структура FLT_REGISTRATION используется для предоставления диспетчеру фильтров сведений о минифильтре файловой системы, таких как подпрограмма FilterUnloadCallback (PFLT_FILTER_UNLOAD_CALLBACK), а также подпрограммы обратного вызова (PFLT_PRE_OPERATION_CALLBACK) и после операции (PFLT_POST_OPERATION_CALLBACK). Мини-фильтр передает указатель на эту структуру в качестве параметра Registrationв FltRegisterFilter.
Требования
Требование | Значение |
---|---|
Заголовок | fltkernel.h (включая Fltkernel.h) |
См. также раздел
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK
PFLT_INSTANCE_TEARDOWN_CALLBACK
PFLT_NORMALIZE_CONTEXT_CLEANUP