Поделиться через


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

Структура FSRTL_PER_STREAM_CONTEXT содержит сведения о контексте, которые драйвер фильтра файловой системы поддерживает в потоке файлов.

Синтаксис

typedef struct _FSRTL_PER_STREAM_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;

Члены

Links

Ссылка на эту структуру в списке всех структур контекста каждого потока, связанных с тем же потоком файлов. FsRtlInsertPerStreamContext вставляет этот элемент в список всех структур контекста каждого потока для файлового потока. Чтобы получить указатель на голову списка из объекта файла, используйте макрос FsRtlGetPerStreamContextPointer и приведите результат к указателю PFSRTL_ADVANCED_FCB_HEADER. Указатель списка — это элемент FilterContexts в структуре заголовка расширенного блока управления файлами (FCB) для потока файлов.

OwnerId

Указатель на выделенную фильтром переменную, которая однозначно определяет владельца структуры контекста потока. Формат этой переменной зависит от драйвера фильтра. Для записи фильтров следует выбрать значение, понятное и удобное, например адрес объекта драйвера или объекта устройства. Драйверы фильтров должны задать для этого элемента значение, отличное отNULL.

InstanceId

Указатель на выделенную фильтром переменную, которую можно использовать для различения структур контекста потока, созданных одним драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Средство записи фильтров должно выбрать значение, понятное и удобное, например адрес объекта контекста потока для потока файлов. (Чтобы получить этот адрес из объекта файла, используйте макрос FsRtlGetPerStreamContextPoint er.)

Этот элемент является необязательным и может быть NULL.

FreeCallback

Указатель на подпрограмму обратного вызова, которая освобождает структуру контекста потока. Эта подпрограмма и ее параметры определяются следующим образом:

VOID
(*PFREE_FUNCTION) (
     IN PVOID Buffer
     );

Буфер

Указатель на бесплатную структуру FSRTL_PER_STREAM_CONTEXT.

Замечания

Драйверы фильтров файловой системы могут использовать структуру FSRTL_PER_STREAM_CONTEXT для поддержания контекстной информации для потока файлов. Эта структура может использоваться как или внедрена в определяемую драйвером структуру контекста потока.

Когда файловая система удаляет объект контекста потока для потока файлов, он должен вызывать FsRtlTeardownPerStreamContexts, что, в свою очередь, вызывает FreeCallback подпрограммы всех структур контекста каждого потока, связанных с файлом.

Примечание Подпрограмм а freeCallback не может рекурсивно вызывать в файловую систему или получать любые ресурсы файловой системы. Кроме того, эта подпрограмма должна предположить, что объект файла для потока файлов уже освобожден.
 
Структура FSRTL_PER_STREAM_CONTEXT может быть выделена из страничного или непагированного пула.

Макрос FsRtlSupportsPerStreamContexts определяет, поддерживает ли файловая система контексты для определенного потока.

BOOLEAN FsRtlSupportsPerStreamContexts(
  [in] PFILE_OBJECT FileObject
);

Параметры

FileObject [in]

PFILE_OBJECT

Указатель на объект файла для потока файлов.

Возвращаемое значение

BOOLEAN

Макрос FsRtlSupportsPerStreamContexts возвращает TRUE, если файловая система поддерживает контексты каждого потока для потока, FALSE противном случае.

Драйверы фильтров файловой системы вызывают FsRtlSupportsPerStreamContexts, чтобы определить, поддерживает ли базовая файловая система контексты для потока файлов, представленных заданным объектом файла. Обратите внимание, что файловая система может поддерживать контексты потока для некоторых типов файлов, но не для других. Например, NTFS и FAT в настоящее время не поддерживают контексты для разбиения по страницам.

Дополнительные сведения см. в контексте отслеживания Per-Stream вустаревшего драйвера фильтра файловой системы.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Эта структура — Windows XP
заголовка ntifs.h (include Ntifs.h)

См. также

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

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