FltGetDiskDeviceObject 函数 (fltkernel.h)

FltGetDiskDeviceObject 例程返回指向与给定卷关联的磁盘设备对象的指针。

语法

NTSTATUS FLTAPI FltGetDiskDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DiskDeviceObject
);

参数

[in] Volume

卷的不透明指针。 此参数是必需的,不能 NULL

[out] DiskDeviceObject

指向接收设备对象指针的调用方分配变量的指针。 在任何错误中,都不会修改此参数。

返回值

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

返回代码 描述
STATUS_FLT_NO_DEVICE_OBJECT 给定卷不存在请求的设备对象。 这是一个错误代码。

言论

FltGetDiskDeviceObject 检索指向卷所在的物理磁盘的存储设备对象的指针。 存储设备不需要是实际的磁盘。

FltGetDiskDeviceObject 递增 DiskDeviceObject中返回的设备对象指针的引用计数。 不再需要此指针时,调用方必须通过调用 ObDereferenceObject来递减此引用计数。 否则,由于未完成的引用,系统无法释放或删除设备对象。 因此,对 FltGetDiskDeviceObject 的每个成功调用都必须匹配对 ObDereferenceObject的后续调用。

微型筛选器必须仅在 I/O 相关回调中调用 FltGetDiskDeviceObject。 否则,返回的设备对象的字段可能无效。 在回调例程中,例如 InstanceTeardownStartCallbackInstanceTeardownCompleteCallback

若要获取指向给定卷的筛选器管理器卷设备对象(VDO)的指针,请调用 FltGetDeviceObject

若要获取卷设备对象所表示的卷的不透明卷指针,请调用 FltGetVolumeFromDeviceObject

有关卷设备对象的详细信息,请参阅 文件系统堆栈

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另请参阅

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject