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