Функция IoCreateStreamFileObjectLite (ntifs.h)

Подпрограмма IoCreateStreamFileObjectLite создает новый объект файла потока, но не вызывает отправку запроса IRP_MJ_CLEANUP в стек драйверов файловой системы.

Синтаксис

PFILE_OBJECT IoCreateStreamFileObjectLite(
  [in, optional] PFILE_OBJECT   FileObject,
  [in, optional] PDEVICE_OBJECT DeviceObject
);

Параметры

[in, optional] FileObject

Указатель на объект файла, с которым связан новый файл потока. Этот параметр является необязательным и может иметь значение NULL.

[in, optional] DeviceObject

Указатель на объект устройства, на котором должен быть открыт потоковый файл. Если вызывающий объект задает для FileObject значение, отличное от NULL, значение DeviceObject игнорируется. В противном случае вызывающий объект должен указать значение, отличное от NULL , для DeviceObject.

Возвращаемое значение

IoCreateStreamFileObjectLite возвращает указатель на вновь созданный объект потокового файла.

Комментарии

Файловые системы вызывают IoCreateStreamFileObjectLite для создания нового объекта файла потока. Объект файла потока идентичен обычному файловому объекту, за исключением того, что установлен флаг FO_STREAM_FILE файлового объекта.

Объект stream file обычно используется для представления внутреннего потока для тома, подключенного файловой системой. Этот файл виртуального тома позволяет файловой системе просматривать, изменять и кэшировать структуру тома на диске, как если бы это был обычный файл. В этом случае параметр DeviceObject в вызове IoCreateStreamFileObjectLite указывает объект устройства тома (VDO) для тома.

Объект stream file также можно использовать для представления альтернативного потока данных для доступа к метаданным, таким как расширенные атрибуты или дескрипторы безопасности, для уже открытого файла. В этом случае параметр FileObject в вызове IoCreateStreamFileObjectLite указывает существующий объект файла для файла. Созданный объект stream file позволяет файловой системе просматривать, изменять и кэшировать метаданные файла, как если бы это был обычный файл.

Если объект файла потока больше не требуется, вызывающий объект должен уменьшать количество ссылок путем вызова ObDereferenceObject. Когда количество ссылок объекта stream file достигает нуля, в стек драйверов файловой системы для тома отправляется запрос IRP_MJ_CLOSE.

Модули записи драйверов фильтров файловой системы должны учитывать, что, в отличие от IoCreateStreamFileObject, IoCreateStreamFileObjectLite не вызывает отправку запроса IRP_MJ_CLEANUP в стек драйверов файловой системы. По этой причине, а также из-за того, что файловые системы часто создают объекты потоковых файлов в качестве побочных эффектов операций, отличных от IRP_MJ_CREATE, драйверам фильтров сложно надежно обнаружить создание объектов потокового файла. Таким образом, драйверы фильтров должны получать запросы IRP_MJ_CLOSE для ранее невидимых файловых объектов.

Если происходит сбой выделения пула, IoCreateStreamFileObjectLite создает исключение STATUS_INSUFFICIENT_RESOURCES.

Требования

Требование Значение
Минимальная версия клиента Windows 2000
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

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

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectEx

ObDereferenceObject