FltOpenVolume 函数 (fltkernel.h)

FltOpenVolume 例程返回一个句柄和一个文件对象指针,该句柄和文件对象指针用于附加到给定的微型筛选器驱动程序实例。

语法

NTSTATUS FLTAPI FltOpenVolume(
  [in]  PFLT_INSTANCE Instance,
  [out] PHANDLE       VolumeHandle,
  [out] PFILE_OBJECT  *VolumeFileObject
);

参数

[in] Instance

实例的不透明实例指针。 此实例必须附加到本地卷。

[out] VolumeHandle

文件系统卷的句柄。

[out] VolumeFileObject

指向调用方分配的变量的指针,该变量接收卷根目录的文件对象指针。 此参数是可选的,可以 NULL

返回值

FltOpenVolume 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 描述
STATUS_FLT_DELETING_OBJECT
正在拆毁实例或卷。 这是一个错误代码。
STATUS_INVALID_PARAMETER
实例附加到网络卷。 这是一个错误代码。

言论

不再需要 VolumeHandle 参数中返回的句柄时,调用方必须通过调用 FltClose释放它。 因此,对 FltOpenVolume 的每个成功调用都必须匹配对 FltClose的后续调用。

如果在 VolumeFileObject 参数中返回文件对象指针,则调用方必须在不再需要 ObDereferenceObject时释放它。

Instance 参数指定的实例必须附加到本地卷。 如果连接到网络卷,FltOpenVolume 返回STATUS_INVALID_PARAMETER。

若要获取指向给定卷的设备对象的指针,请调用 FltGetDeviceObject

若要获取有关给定实例附加到的卷的详细信息,请调用 FltQueryVolumeInformation

注意:不要使用非 NULL 顶级 IRP 值调用此例程,因为这可能会导致系统死锁。 若要确定线程 TopLevelIrp 是否已设置调用 IoGetTopLevelIrp

要求

要求 价值
最低支持的客户端 适用于 SP4、Windows XP SP3、Windows Server 2003 SP1 和更高版本的 Windows作系统Microsoft Windows 2000 更新汇总 1。
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

另请参阅

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject