IoRegisterFsRegistrationChange 函数 (ntifs.h)

IoRegisterFsRegistrationChange 例程注册文件系统筛选器驱动程序的通知例程,每当文件系统将自身注册或注销为活动文件系统时调用。

语法

NTSTATUS IoRegisterFsRegistrationChange(
  [in] PDRIVER_OBJECT          DriverObject,
  [in] PDRIVER_FS_NOTIFICATION DriverNotificationRoutine
);

参数

[in] DriverObject

指向 FS 筛选器驱动程序的驱动程序对象的指针。

[in] DriverNotificationRoutine

指向 PDRIVER_FS_NOTIFICATION 例程的指针,文件系统在注册或注销自身时调用该例程。

返回值

IoRegisterFsRegistrationChange 返回 NTSTATUS 值,如下所示之一。

返回代码 说明
STATUS_SUCCESS 已成功注册通知例程。
STATUS_INSUFFICIENT_RESOURCES 无法为通知例程分配通知数据包。
STATUS_DEVICE_ALREADY_ATTACHED 请参阅“备注”。
STATUS_NOT_SUPPORTED 旧版 FS 筛选器驱动程序被系统策略阻止。 有关详细信息 ,请参阅阻止旧文件系统筛选器驱动程序

注解

每当文件系统调用 IoRegisterFileSystem 或 IoUnregisterFileSystem 时,IoRegisterFsRegistrationChange 会注册 FS 筛选器驱动程序,以便收到通知。

若要停止接收此类通知,筛选器驱动程序应调用 IoUnregisterFsRegistrationChange

当 FS 筛选器驱动程序调用 IoRegisterFsRegistrationChange 时,OS 会立即为所有当前注册的文件系统调用其通知例程。 (已注册的文件系统是已成功调用 IoRegisterFileSystem 但尚未调用 IoUnregisterFileSystem 的文件系统。) 因为调用方通知例程甚至可以在 IoRegisterFsRegistrationChange 返回之前调用,因此筛选器驱动程序在创建处理这些通知所需的任何数据结构之前,不应调用此例程。

IoRegisterFsRegistrationChange 忽略 RAW 设备。 有关按名称附加到 RAW 文件系统的信息,请参阅 将筛选器设备对象附加到目标设备对象

IoRegisterFsRegistrationChange 递增筛选器驱动程序的驱动程序对象的引用计数。

如果满足以下条件,IoRegisterFsRegistrationChange 将返回STATUS_DEVICE_ALREADY_ATTACHED:

  • FS 筛选器驱动程序已连续调用 IoRegisterFsRegistrationChange 两次,而无需在两者之间调用 IoUnregisterFsRegistrationChange
  • 该 FS 筛选器驱动程序为 DriverObjectDriverNotificationRoutine 传递的值与它在之前对 IoRegisterFsRegistrationChange 的调用中注册的值相同。
  • 自第一次调用以来,没有其他筛选器驱动程序注册。

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另请参阅

IoRegisterFileSystem

IoRegisterFsRegistrationChangeEx

IoUnregisterFileSystem

IoUnregisterFsRegistrationChange