FLT_OPERATION_REGISTRATION结构(fltkernel.h)

FLT_OPERATION_REGISTRATION结构用于注册作回调例程。

语法

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

成员

MajorFunction

指定 I/O作类型的主要函数代码。 此成员是必需的,不能 NULL。 有关其他作的详细信息,请参阅 FLT_PARAMETERS

Flags

指定何时为缓存 I/O 或分页 I/O作调用预作(PFLT_PRE_OPERATION_CALLBACK)和后作(PFLT_POST_OPERATION_CALLBACK)回调例程的标志掩码。 此成员是可选的,可以是零。

描述
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO(0x00000001) 微型筛选器为读取或写入作设置此标志,以指定不应为分页 I/O作调用其预作和作后回调例程。 此标志仅适用于基于 IRP 的 I/O作。 对于非基于 IRP 的 I/O作,将忽略它。
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) 微型筛选器为读取或写入作设置此标志,以指定不应为缓存的 I/O作调用其预作和作后回调例程。 此标志适用于快速 I/O 以及基于 IRP 的读取和写入,因为缓存了所有快速 I/O。
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO(0x00000004) 微型筛选器设置此标志,以便跳过对非 DASD 卷句柄发出的所有 。 请注意,将绕过此作的微筛选器回调。
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO(0x00000008) 微型筛选器设置此标志,以便跳过未缓存或分页的读取或写入作。 请注意,将绕过此作的微筛选器回调。 此标志仅适用于IRP_MJ_READ和IRP_MJ_WRITE请求。

PreOperation

指向要注册为此类 I/O作的预作回调例程的 PFLT_PRE_OPERATION_CALLBACK类型例程的指针。 此成员是可选的,可以 NULL

PostOperation

指向要注册为此类 I/O作的后作回调例程的 PFLT_POST_OPERATION_CALLBACK类型例程的指针。 此成员是可选的,可以 NULL

Reserved1

保留供系统使用。 微型筛选器必须将此成员设置为 NULL

言论

当微型筛选器从其 DriverEntry 例程调用 FltRegisterFilter 时,它可以为它必须处理的每种 I/O作类型注册预作回调(PFLT_PRE_OPERATION_CALLBACK)例程和后作回调(PFLT_POST_OPERATION_CALLBACK)例程。

为了注册这些回调例程,微型筛选器将创建FLT_OPERATION_REGISTRATION结构的可变长度数组,并将指向数组的指针存储在 OperationRegistrationFLT_REGISTRATION 结构的成员中,微型筛选器作为 FltRegisterFilterRegistration 参数传递。 此数组的最后一个元素必须是 {IRP_MJ_OPERATION_END}。

微型筛选器必须为它处理的每种 I/O作类型创建单独的FLT_OPERATION_REGISTRATION结构。 在此结构中,微型筛选器指定其回调例程的入口点,这些入口点位于结构的 PreOperationPostOperation 成员中。

微型筛选器可以为给定类型的 I/O作注册预作回调例程,而无需注册作后回调,反之亦然。

文件系统不会收到IRP_MJ_POWER或IRP_MJ_DEVICE_CHANGE请求。 微型筛选器无法为这些作注册预作或作后回调例程。

微型筛选器无法为IRP_MJ_SHUTDOWN注册作后回调例程。

单个预作或作后回调例程可用于处理多个 I/O作类型。 但是,必须为每种 I/O作类型单独注册回调例程。

要求

要求 价值
标头 fltkernel.h (包括 Fltkernel.h)

另请参阅

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK