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 筛选器驱动程序为 DriverObject 和 DriverNotificationRoutine 传递的值与它在之前对 IoRegisterFsRegistrationChange 的调用中注册的值相同。
- 自第一次调用以来,没有其他筛选器驱动程序注册。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |