FltGetVolumeFromName 函数 (fltkernel.h)

FltGetVolumeFromName 例程返回其名称与 VolumeName 参数值匹配的卷的不透明指针。

语法

NTSTATUS FLTAPI FltGetVolumeFromName(
  [in]  PFLT_FILTER      Filter,
  [in]  PCUNICODE_STRING VolumeName,
  [out] PFLT_VOLUME      *RetVolume
);

参数

[in] Filter

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

[in] VolumeName

指向包含卷名称 (的UNICODE_STRING 结构的指针,例如“\Device\HarddiskVolume1”、“\DosDevices\D:”、“\??\D:“或”D:“) 。 此参数是必需的,不能为 NULL

[out] RetVolume

指向调用方分配的变量的指针,该变量接收卷的不透明指针。 此参数是必需的,不能为 NULL

返回值

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

返回代码 说明
STATUS_ACCESS_DENIED 调用方对卷没有FILE_READ_DATA访问权限。 这是错误代码。
STATUS_FLT_DELETING_OBJECT 正在拆除卷。 这是错误代码。
STATUS_INVALID_PARAMETER VolumeName 参数指定了无效值。 这是错误代码。
STATUS_FLT_VOLUME_NOT_FOUND 找不到匹配的卷。 这是错误代码。

注解

FltGetVolumeFromName 在筛选器管理器的全局卷列表中搜索名称与 VolumeName 匹配的卷。 调用方必须对卷具有FILE_READ_DATA访问权限。 若要查找卷结构, FltGetVolumeFromName 必须首先打开卷。

FltGetVolumeFromName 添加对 RetVolume 参数中返回的不透明卷指针的运行引用。 当不再需要此指针时,调用方必须通过调用 FltObjectDereference 来释放它。 因此,每次成功调用 FltGetVolumeFromName 都必须与后续调用 FltObjectDereference 相匹配。

若要获取给定卷的卷名称,请调用 FltGetVolumeName

若要获取给定卷的卷 GUID 名称,请调用 FltGetVolumeGuidName

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

另请参阅

FltGetFilterFromName

FltGetVolumeGuidName

FltGetVolumeInstanceFromName

FltGetVolumeName

FltObjectDereference

UNICODE_STRING