FltAttachVolume 函数 (fltkernel.h)

FltAttachVolume 创建新的微型筛选器驱动程序实例并将其附加到给定卷。

语法

NTSTATUS FLTAPI FltAttachVolume(
  [in, out]      PFLT_FILTER      Filter,
  [in, out]      PFLT_VOLUME      Volume,
  [in, optional] PCUNICODE_STRING InstanceName,
  [out]          PFLT_INSTANCE    *RetInstance
);

参数

[in, out] Filter

调用方不透明筛选器指针。 此参数是必需的,不能 NULL

[in, out] Volume

要附加到微型筛选器驱动程序实例的卷的不透明卷指针。 此参数是必需的,不能 NULL

[in, optional] InstanceName

指向包含新实例实例名称的 UNICODE_STRING 结构的指针。 此参数是可选的,可以 NULL。 如果 NULLFltAttachVolume 尝试从注册表中读取微型筛选器驱动程序的默认实例名称。 (有关此参数的详细信息,请参阅以下备注部分。

[out] RetInstance

指向调用方分配的变量的指针,该变量接收新创建的实例的不透明实例指针。 此参数是可选的,可以 NULL

返回值

FltAttachVolume 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 描述
STATUS_FLT_DELETING_OBJECT
指定的 筛选器 正在被拆毁。 这是一个错误代码。
STATUS_FLT_FILTER_NOT_READY
微型筛选器驱动程序尚未开始筛选。 有关详细信息,请参阅 FltStartFiltering。 这是一个错误代码。
STATUS_FLT_INSTANCE_NAME_COLLISION
指定的卷上已存在具有此名称的实例。
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume 遇到池分配失败。 这是一个错误代码。
STATUS_OBJECT_NAME_COLLISION
另一个实例已在从注册表中读取的实例属性中指定的高度处附加。 这是一个错误代码。

言论

如果调用方为 InstanceName指定非NULL 值,FltAttachVolume 读取存储在 HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName 下的注册表中存储的任何实例属性, 其中 ServiceName 是微型筛选器驱动程序的服务名称。 此服务名称是在微型筛选器驱动程序 INF 文件的 DefaultInstall.Services 节AddService 指令 中指定的。 (有关筛选器驱动程序 INF 文件的详细信息,请参阅 安装文件系统筛选器驱动程序。)

如果调用方未为 InstanceName指定值,FltAttachVolume 使用注册表中存储的名称,该名称位于 HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance 中,用于注册表路径的 InstanceName 部分。

InstanceName 参数中指定的实例名称需要在整个系统中是唯一的。

FltAttachVolume 返回 *RetInstance中新实例的不透明实例指针。 此指针值唯一标识微型筛选器驱动程序实例,只要实例附加到卷,该实例就保持不变。

FltAttachVolume*RetInstance中返回的不透明实例指针添加一个运行引用。 不再需要此指针时,调用方必须通过调用 FltObjectDereference释放它。 因此,对 FltAttachVolume 的每个成功调用都必须匹配对 FltObjectDereference的后续调用。

若要将微型筛选器驱动程序实例附加到给定高度的卷,请调用 FltAttachVolumeAtAltitude

若要比较附加到同一卷的两个微型筛选器驱动程序实例的高度,请调用 FltCompareInstanceAltitudes

若要从卷中分离微型筛选器驱动程序实例,请调用 FltDetachVolume

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
IRQL PASSIVE_LEVEL

另请参阅

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING