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) |
Library | Fltmgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |