Поделиться через


Функция FltOpenVolume (fltkernel.h)

Подпрограмма FltOpenVolum e возвращает дескриптор и указатель объекта файла для тома файловой системы, к которому подключен определенный экземпляр драйвера минифильтра.

Синтаксис

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.

Экземпляр, указанный параметром экземпляра, должен быть присоединен к локальному тому. Если он подключен к сетевому тому, FltOpenVolume возвращает STATUS_INVALID_PARAMETER.

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

Чтобы получить подробные сведения о томе, к которому подключен данный экземпляр, вызовите FltQueryVolumeInformation.

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

Требования

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

См. также

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject