FltGetVolumeInstanceFromName 函数 (fltkernel.h)
FltGetVolumeInstanceFromName 例程返回给定卷上给定微型筛选器驱动程序实例的不透明实例指针。
语法
NTSTATUS FLTAPI FltGetVolumeInstanceFromName(
[in, optional] PFLT_FILTER Filter,
[in] PFLT_VOLUME Volume,
[in, optional] PCUNICODE_STRING InstanceName,
[out] PFLT_INSTANCE *RetInstance
);
参数
[in, optional] Filter
拥有该实例的微型筛选器驱动程序的不透明筛选器指针。 此参数是可选的,可以 NULL。
[in] Volume
实例附加到的卷的不透明指针。 必须是有效的卷句柄。 此参数是必需的,不能 NULL。 (将此参数设置为无效值会导致系统在选中的生成时断言。
[in, optional] InstanceName
指向调用方分配 UNICODE_STRING 结构的指针,该结构包含卷上实例的实例名称。 (这是 InstanceName 值,该值在创建实例时传递给 FltAttachVolume 或 FltAttachVolumeAtAltitude。此参数是可选的,可以 NULL。 如果它 NULL,FltGetVolumeInstanceFromName 返回找到的最高匹配实例。
[out] RetInstance
指向调用方分配的变量的指针,该变量接收与 Filter、Volume和 InstanceName的值匹配的实例的不透明实例指针。 此参数是必需的,不能 NULL。
返回值
FltGetVolumeInstanceFromName 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:
返回代码 | 描述 |
---|---|
|
实例正在被拆毁。 这是一个错误代码。 |
|
找不到匹配的实例。 这是一个错误代码。 |
言论
FltGetVolumeInstanceFromName 搜索附加到 Volume 参数中指定的卷的微型筛选器驱动程序实例列表,从最顶层实例开始。 如果多个实例匹配 Filter、Volume和 InstanceName 参数的给定值,FltGetVolumeInstanceFromName 返回找到的最高匹配实例。
术语“海拔”是指实例在卷的微型筛选器驱动程序实例堆栈中占据(或应占用)的位置。 高度越高,实例离堆栈中基本文件系统越远。 给定卷上的给定高度只能附加一个实例。
海拔高度由 高度字符串指定,该字符串由 0 到 9 之间的一个或多个十进制数字组成的计数 Unicode 字符串,它可以包含单个小数点。 例如,“100.123456”和“03333”是有效的高度字符串。
字符串“03333”表示高度高于“100.123456”。 (将忽略前导和尾随零。换句话说,其高度为“03333”的实例比高度为“100.123456”的实例远于基本文件系统。 但是,仅当这两个实例都附加到同一卷时,此比较才有意义。
FltGetVolumeInstanceFromName 添加对 RetInstance 参数中返回的不透明实例指针的运行引用。 不再需要此指针时,调用方必须通过调用 FltObjectDereference释放它。 因此,对 FltGetVolumeInstanceFromName 的每个成功调用都必须匹配对 FltObjectDereference的后续调用。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |