Функция 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.

Минифильтр должен вызывать FltGetDiskDeviceObject только при обратном вызове, связанном с вводом-выводом. В противном случае поля возвращаемого объекта устройства могут быть недопустимыми. Это относится к подпрограммам обратного вызова, таким как InstanceTeardownStartCallback и InstanceTeardownCompleteCallback.

Чтобы получить указатель на объект устройства тома (VDO) диспетчера фильтров для заданного тома, вызовите FltGetDeviceObject.

Чтобы получить непрозрачный указатель тома для тома, представленного объектом устройства тома, вызовите Метод FltGetVolumeFromDeviceObject.

Дополнительные сведения об объектах устройства томов см. в разделе Стеки файловой системы.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

См. также раздел

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject