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

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

InstanceSetupCallback

指向要注册为微型筛选器的 InstanceSetupCallback 例程 PFLT_INSTANCE_SETUP_CALLBACK 类型的例程的指针。 此成员是可选的,可以 NULL。 请注意,如果为此例程指定了 NULL,则始终执行附件。

InstanceQueryTeardownCallback

指向要注册为微型筛选器的 InstanceQueryTeardownCallback 例程的 PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK 类型的例程的指针。 此成员是可选的,可以 NULL。 请注意,如果为此例程指定 NULL,则永远不会手动分离实例。

InstanceTeardownStartCallback

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

InstanceTeardownCompleteCallback

指向要注册为 minifilter InstanceTeardownCompleteCallback 例程的类型 PFLT_INSTANCE_TEARDOWN_CALLBACK 例程的指针。 此成员是可选的,可以 NULL

GenerateFileNameCallback

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

NormalizeNameComponentCallback

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

NormalizeContextCleanupCallback

指向要注册为 minifilter NormalizeContextCleanupCallback 例程的类型 PFLT_NORMALIZE_CONTEXT_CLEANUP 例程的指针。 此成员是可选的,可以 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结构用于向筛选器管理器提供有关文件系统微型筛选器的信息,例如 FilterUnloadCallbackPFLT_FILTER_UNLOAD_CALLBACK) 例程和预作(PFLT_PRE_OPERATION_CALLBACK)和作后(PFLT_POST_OPERATION_CALLBACK)回调例程。 微型筛选器将指向此结构的指针作为 Registration 参数传递给 FltRegisterFilter

要求

要求 价值
标头 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