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

Устаревший драйвер фильтра файловой системы может использовать структуру 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)

См. также

FsRtlGetPerFileContextPointer

FsRtlInitPerFileContext

FsRtlInsertPerFileContext

FsRtlTeardownPerFileContexts

PFREE_FUNCTION

контекст отслеживания Per-File в устаревшем драйвере фильтра файловой системы