Макрос 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.
Возвращаемое значение
None
Remarks
Драйвер фильтра файловой системы использует макрос FsRtlInitPerStreamContext для инициализации только что выделенной структуры контекста для каждого потока перед связыванием ее с файловым потоком. Инициализированную структуру контекста можно передать в качестве параметра в FsRtlInsertPerStreamContext.
FsRtlInitPerStreamContext сохраняет адрес подпрограммы FreeCallback в элементе FreeCallback структуры FSRTL_PER_STREAM_CONTEXT.
Подпрограмма FreeCallback вызывается по адресу IRQL <= APC_LEVEL. Обычно он вызывается на PASSIVE_LEVEL IRQL.
После связывания структуры контекста с файловым потоком ее можно получить, вызвав FsRtlLookupPerStreamContext или вызвав FsRtlRemovePerStreamContext.
Дополнительные сведения см. в статье Отслеживание Per-Stream контекста в устаревшем драйвере фильтра файловой системы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP; Накопительный пакет обновления для Windows 2000 с пакетом обновления 4 (SP4) |
Целевая платформа | Персональный компьютер |
Верхняя часть | ntifs.h (включая Ntifs.h) |
IRQL | Любой уровень |
См. также раздел
FsRtlGetPerStreamContextPointer
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по