FsRtlInitPerStreamContext 宏 (ntifs.h)

FsRtlInitPerStreamContext 宏初始化筛选器驱动程序上下文结构。

语法

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

参数

_fc

指向调用方分配的FSRTL_PER_STREAM_CONTEXT结构的指针,该结构用于维护文件流的上下文信息。 此结构可以按原样使用或嵌入在驱动程序定义的按流上下文结构中。 这两种结构类型通常通过调用 ExAllocatePoolWithTag 进行分配。

_owner

指向调用方分配的变量的指针,该变量唯一标识每流上下文结构的所有者。 此变量的格式是特定于筛选器驱动程序 。 筛选器编写器应选择既有意义又方便的值,例如驱动程序对象或设备对象的地址。 调用方必须为此参数指定非 NULL 值。

_inst

指向筛选器驱动程序 、 分配的变量的指针,该变量可用于区分由同一筛选器驱动程序创建的按流上下文结构。 此变量的格式是特定于筛选器驱动程序 。 筛选器编写器应选择既有意义又方便的值,例如文件流的流上下文对象的地址。 (若要从文件对象获取此地址,请使用 FsRtlGetPerStreamContextPointer macro.) 此参数是可选的,可以为 NULL

_cb

指向释放按流上下文结构的回调例程的指针。 调用方必须为此参数指定非 NULL 值。 此例程及其参数的定义如下:

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

缓冲区

指向要释放的每流上下文结构的指针。 FreeCallback 例程通常将此指针强制转换为适当的结构指针类型,并通过调用 ExFreePool 将其释放。

返回值

备注

文件系统筛选器驱动程序使用 FsRtlInitPerStreamContext 宏初始化新分配的每流上下文结构,然后再将其与文件流相关联。 初始化的上下文结构可以作为参数传递给 FsRtlInsertPerStreamContext

FsRtlInitPerStreamContextFreeCallback 例程的地址存储在 FSRTL_PER_STREAM_CONTEXT 结构的 FreeCallback 成员中。

在 IRQL <= APC_LEVEL 调用 FreeCallback 例程。 通常,在 IRQL PASSIVE_LEVEL调用它。

注意FreeCallback 例程不能以递归方式调用文件系统或获取任何文件系统资源。 此外,此例程必须假定已释放文件流的文件对象。
 
若要将初始化的每个流上下文结构与文件流相关联,请调用 FsRtlInsertPerStreamContext

上下文结构与文件流关联后,可以通过调用 FsRtlLookupPerStreamContext 来检索它,或通过调用 FsRtlRemovePerStreamContext 将其删除。

有关详细信息,请参阅 跟踪旧版文件系统筛选器驱动程序中的 Per-Stream 上下文

要求

要求
最低受支持的客户端 Windowsxp;Windows 2000 Service Pack 4 (SP4) 更新汇总
目标平台 桌面
标头 ntifs.h (包括 Ntifs.h)
IRQL 任何级别

另请参阅

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts