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。 否则,返回的设备对象的字段可能无效。 在回调例程中,例如 InstanceTeardownStartCallback 和 InstanceTeardownCompleteCallback。
若要获取指向给定卷的筛选器管理器卷设备对象(VDO)的指针,请调用 FltGetDeviceObject。
若要获取卷设备对象所表示的卷的不透明卷指针,请调用 FltGetVolumeFromDeviceObject。
有关卷设备对象的详细信息,请参阅 文件系统堆栈。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | Fltmgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |