структура FSRTL_PER_FILEOBJECT_CONTEXT (ntifs.h)

Операционная система использует непрозрачную структуру FSRTL_PER_FILEOBJECT_CONTEXT для отслеживания структур контекстных данных, определенных драйвером фильтра файловой системы для файлового объекта.

Синтаксис

typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
  LIST_ENTRY Links;
  PVOID      OwnerId;
  PVOID      InstanceId;
} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;

Члены

Links

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

OwnerId

Указатель на переменную, выделенную драйвером фильтра, которая однозначно определяет фильтр-владельцев структуры контекста для каждого файла и объекта. Формат этой переменной зависит от драйвера фильтра. Модули записи фильтров должны выбрать понятное и удобное значение, например адрес объекта устройства фильтра или объекта драйвера. Обратите внимание, что значение этого элемента не может иметь значение NULL.

InstanceId

Указатель на переменную, выделенную драйвером фильтра, которую можно использовать для различения структур контекста отдельных файловых объектов, созданных одним и тем же драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Модули записи фильтров должны выбрать понятное и удобное значение, например адрес самого объекта файла. Обратите внимание, что значение этого элемента может иметь значение NULL.

Комментарии

Драйверы фильтров файловой системы могут использовать непрозрачную структуру FSRTL_PER_FILEOBJECT_CONTEXT для хранения контекстных сведений для объекта файла. Эту структуру можно использовать как есть или внедрять в определяемую драйвером структуру контекста для каждого объекта файла.

Каждый файловый объект может иметь один связанный с ним список контекстной структуры для каждого файла и объекта. Каждый член этого списка (то есть определенная структура контекста для каждого файла и объекта) принадлежит драйверу фильтра. С точки зрения драйвера фильтра каждый драйвер фильтра может связать несколько структур контекста для каждого объекта файла для одного и того же объекта файла.

Каждая определяемая фильтром структура контекста для каждого объекта файла должна содержать инициализированную структуру FSRTL_PER_FILEOBJECT_CONTEXT. Структура FSRTL_PER_FILEOBJECT_CONTEXT может быть выделена из страничного или нестраничного пула и должна быть инициализирована с помощью макроса FsRtlInitPerFileObjectContext .

Чтобы вставить структуру FSRTL_PER_FILEOBJECT_CONTEXT или определяемую фильтром структуру контекста для каждого объекта file-object (содержащую инициализированную структуру FSRTL_PER_FILEOBJECT_CONTEXT) в список всех контекстных структур для объекта файла, используйте функцию FsRtlInsertPerFileObjectContext .

После того как структура контекста FSRTL_PER_FILEOBJECT_CONTEXT или отдельных файловых объектов была связана с файловым объектом, ее можно получить, вызвав FsRtlLookupPerFileObjectContext или удалить, вызвав FsRtlRemovePerFileObjectContext (на основе значений OwnerId и InstanceId).

Драйверы минифильтров файловой системы не должны использовать следующие функции:

Вместо этого минифильтры могут использовать следующие функции для связи контекстных сведений с объектом файла:

Драйверы минифильтров файловой системы не должны использовать функции FsRtlXxxPerFileObjectContext . Вместо этого минифильтры могут использовать функции контекста FltXxx для связывания контекстных сведений с объектом файла. Полный список см. в разделе FSRTL_PER_FILEOBJECT_CONTEXT .

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Верхняя часть ntifs.h (включая Fltkernel.h, Ntifs.h)

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

DEVICE_OBJECT

DRIVER_OBJECT

FILE_OBJECT

FltAllocateContext

FltDeleteContext

FltDeleteStreamHandleContext

FltGetStreamHandleContext

FltReleaseContext

FltSetStreamHandleContext

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext

FsRtlRemovePerFileObjectContext