PFLT_INSTANCE_SETUP_CALLBACK回调函数 (fltkernel.h)
微筛选器驱动程序可以将 PFLT_INSTANCE_SETUP_CALLBACK 类型的例程注册为微筛选器驱动程序的 InstanceSetupCallback 例程。
语法
PFLT_INSTANCE_SETUP_CALLBACK PfltInstanceSetupCallback;
NTSTATUS PfltInstanceSetupCallback(
[in] PCFLT_RELATED_OBJECTS FltObjects,
[in] FLT_INSTANCE_SETUP_FLAGS Flags,
[in] DEVICE_TYPE VolumeDeviceType,
[in] FLT_FILESYSTEM_TYPE VolumeFilesystemType
)
{...}
参数
[in] FltObjects
指向 FLT_RELATED_OBJECTS 结构的指针,该结构包含与当前操作相关的对象的不透明指针。
[in] Flags
指示实例附加原因的标志的位掩码。 可以是以下一项或多项:
标志 | 含义 |
---|---|
FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT (0x00000001) | 实例将自动附加。 微筛选器驱动程序刚刚加载并附加到所有现有卷,或者它正在附加到新装载的卷。 |
FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT (0x00000002) | 手动附加实例是因为用户模式应用程序具有名为 FilterAttach 或 FilterAttachAtAltitude,或者因为内核模式组件名为 FltAttachVolume 或 FltAttachVolumeAtAltitude |
FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME (0x00000004) | 实例将自动附加到新装载的卷。 |
FLTFL_INSTANCE_SETUP_DETACHED_VOLUME (0x00000008) | 实例正在附加到分离卷。 在某些文件系统 ((例如 FAT 和 CDFS)上,某些可移动媒体驱动器) 使用,可以在卷分离后重新附加卷。 如果卷没有关联的存储堆栈,则将其分离。 处于此状态的卷通常是仍具有打开文件的已卸除卷。 |
FLTFL_INSTANCE_SETUP_DEV_VOLUME (0x00000010) | 实例将附加到格式化为开发人员卷的卷。 文件系统筛选器可以启用不需要管理员信任给定计算机上的卷的优化。 从 Windows 11 版本 22H2 9 月更新开始可用。 |
FLTFL_INSTANCE_SETUP_TRUSTED_VOLUME (0x00000020) | 指示给定计算机上的管理员信任此卷,并愿意启用优化,例如不将防病毒筛选器附加到卷。 此信息将保留在给定计算机上的注册表中。 文件系统筛选器可以使用此选项来启用需要管理员信任给定计算机上的卷的优化。 从 Windows 11 版本 22H2 9 月更新开始可用。 |
[in] VolumeDeviceType
文件系统卷的设备类型。 必须是下列选项之一:
- FILE_DEVICE_CD_ROM_FILE_SYSTEM (0x00000002)
- FILE_DEVICE_DISK_FILE_SYSTEM (0x00000008)
- FILE_DEVICE_NETWORK_FILE_SYSTEM (0x00000014)
[in] VolumeFilesystemType
卷的文件系统类型。 FLT_FILESYSTEM_TYPE 中列出了可能的值。
返回值
此回调例程返回STATUS_SUCCESS或 NTSTATUS 值,如下所示:
返回代码 | 说明 |
---|---|
STATUS_FLT_DO_NOT_ATTACH | 返回此值可防止将微筛选器驱动程序实例附加到给定卷。 这是错误代码。 |
注解
注意
请勿在 PFLT_INSTANCE_SETUP_CALLBACK 实现中执行任何线程同步或进程间通信。 执行此类操作可能会导致死锁情况。
当微筛选器驱动程序通过从其 DriverEntry 例程调用 FltRegisterFilter 来注册自身时,它可以将 PFLT_INSTANCE_SETUP_CALLBACK 类型的例程注册为微筛选器驱动程序的 InstanceSetupCallback 例程。
为了注册 InstanceSetupCallback 例程,微筛选器驱动程序将 PFLT_INSTANCE_SETUP_CALLBACK 类型的例程的地址存储在FLT_REGISTRATION 结构的InstanceSetupCallback 成员中,该结构是小筛选器驱动程序作为 FltRegisterFilter 的 Registration 参数传递的。
筛选器管理器在装载新卷后的第一次操作中调用此例程。
筛选器管理器调用此例程以允许微筛选器驱动程序响应自动或手动附件请求。 如果此例程返回错误或警告 NTSTATUS 代码,则微筛选器驱动程序实例不会附加到给定卷。 否则,微筛选器驱动程序实例将附加到给定卷。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | fltkernel.h (包括 Fltkernel.h) |
IRQL | PASSIVE_LEVEL |
另请参阅
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK