структура 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).
Драйверы минифильтров файловой системы не должны использовать следующие функции:
- FsRtlInitPerFileObjectContext
- FsRtlInsertPerFileObjectContext
- FsRtlLookupPerFileObjectContext
- FsRtlRemovePerFileObjectContext
Вместо этого минифильтры могут использовать следующие функции для связи контекстных сведений с объектом файла:
- FltAllocateContext
- FltDeleteContext
- FltSetStreamHandleContext
- FltDeleteStreamHandleContext
- FltGetStreamHandleContext
- FltReleaseContext
Драйверы минифильтров файловой системы не должны использовать функции FsRtlXxxPerFileObjectContext . Вместо этого минифильтры могут использовать функции контекста FltXxx для связывания контекстных сведений с объектом файла. Полный список см. в разделе FSRTL_PER_FILEOBJECT_CONTEXT .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Верхняя часть | ntifs.h (включая Fltkernel.h, Ntifs.h) |
См. также раздел
FsRtlInsertPerFileObjectContext
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по