структура 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 вставляет этот элемент в список всех структур контекста объекта file-object для объекта файла.

OwnerId

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

InstanceId

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

Замечания

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

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

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

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

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
заголовка ntifs.h (include Fltkernel.h, Ntifs.h)

См. также

DEVICE_OBJECT

DRIVER_OBJECT

FILE_OBJECT

FltAllocateContext

FltDeleteContext

FltDeleteStreamHandleContext

FltGetStreamHandleContext

FltReleaseContext

FltSetStreamHandleContext

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext

FsRtlRemovePerFileObjectContext