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

ПРИМЕЧАНИЕ. Не вызывайте эту подпрограмму со значением IRP верхнего уровня, отличном от NULL, так как это может привести к взаимоблокировке системы. Чтобы определить, задан ли поток TopLevelIrp, вызовите IoGetTopLevelIrp.

Требования

Требование Значение
Минимальная версия клиента Доступно в пакете обновления 1 для Microsoft Windows 2000 с пакетом обновления 1 (SP4), Windows XP с пакетом обновления 3 (SP3), Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях операционной системы Windows.
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

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

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject