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 ,也可以是以下各项的组合。

含义
FLTFL_REGISTRATION_DO_NOT_SUPPORT_SERVICE_STOP
如果设置了此标志,则即使 FilterUnloadCallback 成员不是 NULL,也不会卸载微筛选器以响应服务停止请求。
FLTFL_REGISTRATION_SUPPORT_NPFS_MSFS
如果设置了此标志,则微筛选器将支持筛选命名管道和 mailslot 请求。 此标志是在 Windows 8 中引入的。
FLTFL_REGISTRATION_SUPPORT_DAX_VOLUME
如果设置了此标志,则微筛选器将支持附加到直接访问 (DAX) 卷。 这将向筛选器管理器指示微筛选器将筛选 DAX 卷。 此标志是在 Windows 10 版本 1607 中引入的。

ContextRegistration

FLT_CONTEXT_REGISTRATION结构的可变长度数组,适用于微筛选器使用的每个上下文类型。 数组中的最后一个元素必须是 {FLT_CONTEXT_END}。 此成员是可选的,可以为 NULL

OperationRegistration

一个由FLT_OPERATION_REGISTRATION结构的可变长度数组,每种类型的 I/O 各有一个,微筛选器为其注册预操作 (PFLT_PRE_OPERATION_CALLBACK) 和后操作 (PFLT_POST_OPERATION_CALLBACK) 回调例程。 数组中的最后一个元素必须是 {IRP_MJ_OPERATION_END}。 此成员是可选的,可以为 NULL

FilterUnloadCallback

指向类型的例程 的指针,PFLT_FILTER_UNLOAD_CALLBACK 要注册为微筛选器的 FilterUnloadCallback 例程。 此成员是可选的,可以为 NULL。 请注意,如果为此例程指定 NULL ,则永远无法卸载筛选器。

InstanceSetupCallback

指向要注册为微筛选器的 InstanceSetupCallback 例程PFLT_INSTANCE_SETUP_CALLBACK类型的例程的指针。 此成员是可选的,可以为 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

指向要注册为微筛选器的 GenerateFileNameCallback 例程PFLT_GENERATE_FILE_NAME类型的例程的指针。 此成员是可选的,可以为 NULL

NormalizeNameComponentCallback

指向类型 PFLT_NORMALIZE_NAME_COMPONENT 要注册为微筛选器 NormalizeNameComponentCallback 例程的例程的指针。 此成员是可选的,可以为 NULL

NormalizeContextCleanupCallback

指向类型的例程 的指针,PFLT_NORMALIZE_CONTEXT_CLEANUP 要注册为微筛选器的 NormalizeContextCleanupCallback 例程。 此成员是可选的,可以为 NULL

TransactionNotificationCallback

仅 (Windows Vista 及更高版本。) 指向要注册为微筛选器的 TransactionNotificationCallback程PFLT_TRANSACTION_NOTIFICATION_CALLBACK类型的例程的指针。 此成员是可选的,可以为 NULL

NormalizeNameComponentExCallback

仅 (Windows Vista 及更高版本。) 指向要注册为微筛选器驱动程序 NormalizeNameComponentExCallback程PFLT_NORMALIZE_NAME_COMPONENT_EX类型的例程的指针。 此成员是可选的,可以为 NULL

NormalizeNameComponentCallback 回调例程相比, NormalizeNameComponentExCallback 回调例程支持其他文件对象参数 FileObject (类型为 PFILE_OBJECT) 。 微筛选器驱动程序可以使用此参数来获取其他信息,例如 TXN_PARAMETER_BLOCK 结构提供的信息。

微筛选器驱动程序可以同时将 NormalizeNameComponentCallbackNormalizeNameComponentExCallback 成员设置为 NULL;但是,名称提供程序微筛选器驱动程序必须注册 NormalizeNameComponentCallbackNormalizeNameComponentExCallback 回调例程,或同时注册这两者。 例如,对其他 FileObject 参数没有用途的名称提供程序微筛选器驱动程序可以将 NormalizeNameComponentExCallback 成员设置为 NULL ,并且仅提供 NormalizeNameComponentCallback 回调例程。

微筛选器驱动程序可以提供 NormalizeNameComponentCallback 回调和 NormalizeNameComponentExCallback 回调。 在这种情况下,从 Windows Vista 开始,筛选器管理器将仅使用 NormalizeNameComponentExCallback 回调;对于 Windows Vista 之前的 Windows 操作系统,筛选器管理器将仅使用 NormalizeNameComponentCallback 回调。 这允许同一微筛选器驱动程序二进制文件在所有版本的操作系统下运行。

SectionNotificationCallback

指向要注册为微筛选器的 SectionNotificationCallback 例程PFLT_SECTION_CONFLICT_NOTIFICATION_CALLBACK类型的例程的指针。 此成员是可选的,可以为 NULL。 对于使用 FltCreateSectionForDatascan 创建的节的 I/O 失败通知,调用此回调。

注解

FLT_REGISTRATION结构用于向筛选器管理器提供有关文件系统微筛选器的信息,例如 FilterUnloadCallback (PFLT_FILTER_UNLOAD_CALLBACK) 例程和预操作 (PFLT_PRE_OPERATION_CALLBACK) 和操作后 (PFLT_POST_OPERATION_CALLBACK) 回调例程。 微筛选器将指向此结构的指针作为 Registration 参数传递给 FltRegisterFilter

要求

要求
Header fltkernel.h (包括 Fltkernel.h)

另请参阅

FLT_CONTEXT_REGISTRATION

FLT_OPERATION_REGISTRATION

FltRegisterFilter

PFLT_FILTER_UNLOAD_CALLBACK

PFLT_GENERATE_FILE_NAME

PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

PFLT_INSTANCE_SETUP_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

PFLT_NORMALIZE_NAME_COMPONENT_EX

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

PFLT_TRANSACTION_NOTIFICATION_CALLBACK