Макрос FsRtlInitPerStreamContext (ntifs.h)
Макрос FsRtlInitPerStreamContext инициализирует структуру контекста драйвера фильтра.
Синтаксис
void FsRtlInitPerStreamContext(
_fc,
_owner,
_inst,
_cb
);
Параметры
_fc
Указатель на выделенную вызывающим FSRTL_PER_STREAM_CONTEXT структуру, которая будет использоваться для поддержания контекстной информации для потока файлов. Эта структура может использоваться как или внедрена в определяемую драйвером структуру контекста потока. Оба типа структуры обычно выделяются путем вызова ExAllocatePoolWithTag.
_owner
Указатель на выделенную вызывающим переменную, которая однозначно идентифицирует владельца структуры контекста потока. Формат этой переменной — драйвер фильтра — конкретный. Для записи фильтров следует выбрать значение, понятное и удобное, например адрес объекта драйвера или объекта устройства. Вызывающие элементы должны указать значение, отличное отNULL для этого параметра.
_inst
Указатель на драйвер фильтра — выделенную переменную, которую можно использовать для различения структур контекста потока, созданных одним драйвером фильтра. Формат этой переменной — драйвер фильтра — конкретный. Средство записи фильтров должно выбрать значение, понятное и удобное, например адрес объекта контекста потока для потока файлов. (Чтобы получить этот адрес из объекта файла, используйте макрос FsRtlGetPerStreamContextPointer.) Этот параметр является необязательным и может быть null.
_cb
Указатель на подпрограмму обратного вызова, которая освобождает структуру контекста потока. Вызывающие элементы должны указать значение, отличное отNULL для этого параметра. Эта подпрограмма и ее параметры определяются следующим образом:
typedef VOID (*PFREE_FUNCTION) ( IN PVOID Buffer ); |
- буфера
Указатель на структуру контекста потока для освобождения. Подпрограмма FreeCallback обычно приводит этот указатель к соответствующему типу указателя структуры и освобождает его путем вызова ExFreePool.
Возвращаемое значение
Никакой
Замечания
Драйвер фильтра файловой системы использует макрос FsRtlInitPerStreamContext, чтобы инициализировать только что выделенную структуру контекста потока перед связыванием ее с файлом. Структура инициализированного контекста может передаваться в качестве параметра в FsRtlInsertPerStreamContext.
FsRtlInitPerStreamContext сохраняет адрес подпрограммы FreeCallback в FreeCallback член структуры FSRTL_PER_STREAM_CONTEXT.
Подпрограмма FreeCallback вызывается в IRQL <= APC_LEVEL. Как правило, он вызывается в IRQL PASSIVE_LEVEL.
После того как структура контекста была связана с потоком файлов, ее можно получить путем вызова FsRtlLookupPerStreamContext или удаления путем вызова FsRtlRemovePerStreamContext.
Дополнительные сведения см. в контексте отслеживания Per-Stream вустаревшего драйвера фильтра файловой системы.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP; Накопительный пакет обновления для Windows 2000 с пакетом обновления 4 (SP4) |
целевая платформа | Настольный |
заголовка | ntifs.h (include Ntifs.h) |
IRQL | Любой уровень |
См. также
FsRtlGetPerStreamContextPointer