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。
FsRtlInitPerStreamContext 将 FreeCallback 例程的地址存储在 FSRTL_PER_STREAM_CONTEXT 结构的 FreeCallback 成员中。
在 IRQL <= APC_LEVEL 调用 FreeCallback 例程。 通常,在 IRQL PASSIVE_LEVEL调用它。
上下文结构与文件流关联后,可以通过调用 FsRtlLookupPerStreamContext 来检索它,或通过调用 FsRtlRemovePerStreamContext 将其删除。
有关详细信息,请参阅 跟踪旧版文件系统筛选器驱动程序中的 Per-Stream 上下文。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windowsxp;Windows 2000 Service Pack 4 (SP4) 更新汇总 |
目标平台 | 桌面 |
标头 | ntifs.h (包括 Ntifs.h) |
IRQL | 任何级别 |
另请参阅
FsRtlGetPerStreamContextPointer