Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устаревший драйвер фильтра файловой системы может использовать структуру FSRTL_PER_FILE_CONTEXT для связывания сведений о контексте драйвера с открытым файлом.
Синтаксис
typedef struct _FSRTL_PER_FILE_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
Члены
Links
Ссылка на эту структуру в списке всех структур контекста каждого файла, связанных с тем же файлом. FsRtlInsertPerFileContext вставляет этот элемент в список всех структур контекста каждого файла для файла.
OwnerId
Указатель на выделенный фильтром буфер, который однозначно идентифицирует владельца структуры контекста файла. Формат этой переменной зависит от драйвера фильтра. Драйверы фильтров должны задать для этого элемента значение, отличное отNULL.
InstanceId
Указатель на выделенный фильтром буфер, который можно использовать для различения структур контекста каждого файла, созданных одним драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Драйверы фильтров могут задать для этого элемента значение NULL.
FreeCallback
Указатель на подпрограмму обратного вызова , которая освобождает структуру контекста каждого файла. Драйверы фильтров должны задать для этого элемента значение, отличное отNULL.
Замечания
Чтобы связать контекстные сведения с файлом, устаревший драйвер фильтра сначала выделяет структуру FSRTL_PER_FILE_CONTEXT и инициализирует ее с помощью FsRtlInsertPerFileContext. Затем драйвер использует FsRtlInsertPerFileContext для связывания этого объекта FSRTL_PER_FILE_CONTEXT с файлом. Когда система удаляет объект контекста файла для файла, он вызывает FsRtlTeardownPerFileContexts, который вызывает подпрограмму FreeCallback, указанную в объекте FSRTL_PER_FILE_CONTEXT. Этот обратный вызов должен освободить объект контекста для конкретного драйвера.
Записи фильтров должны выбрать значение OwnerID, которое удобно и понятно, например адрес объекта драйвера или объекта устройства.
Средство записи фильтров должно выбрать значение InstanceID, понятное и удобное, например адрес объекта контекста файла для файла. Используйте макрос FsRtlGetPerFileContextPointer, чтобы получить этот адрес из объекта файла.
Структура FSRTL_PER_FILE_CONTEXT может использоваться as-isили внедрена в определяемую драйвером структуру контекста для каждого файла.
Структура FSRTL_PER_FILE_CONTEXT может быть выделена из страничного или непагированного пула.
Макрос FsRtlInitPerFileContext инициализирует структуру FSRTL_PER_FILE_CONTEXT.
Параметры
FileContext
FSRTL_PER_FILE_CONTEXT
Объект FSRTL_PER_FILE_CONTEXT для инициализации.
OwnerId
PVOID
Указатель на выделенную драйвером переменную фильтра, которая однозначно идентифицирует владельца структуры контекста файла. Формат — это фильтрация драйвера. Этот параметр должен иметь значение, отличное отNULL.
InstanceId
PVOID
Указатель на выделенную драйвером переменную фильтра, которая однозначно идентифицирует владельца структуры контекста файла. Формат — это фильтрация драйвера. Этот параметр должен иметь значение, отличное отNULL.
FreeCallback
PFREE_FUNCTION
Указатель на подпрограмму обратного вызова , которая освобождает структуру контекста каждого файла.
Возвращаемое значение
VOID
Никакой.
Этот макрос необходимо использовать перед вызовом FsRtlInsertPerFileContext.
Записи фильтров должны выбрать значение OwnerID, которое удобно и понятно, например адрес объекта драйвера или объекта устройства.
Записи фильтров должны использовать значение InstanceID, которое удобно и понятно, например адрес объекта контекста файла для файла. Используйте макрос FsRtlGetPerFileContextPointer, чтобы получить этот адрес из объекта файла.
Дополнительные сведения об использовании и создании объектов контекста см. в разделе Отслеживание Per-File контекста вдрайвера фильтра устаревшей файловой системы.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Доступно начиная сWindows Vista. |
| заголовка | ntifs.h (include Fltkernel.h, Ntifs.h) |
См. также
контекст отслеживания Per-File в устаревшем драйвере фильтра файловой системы