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

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

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

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

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

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

要求

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

另请参阅

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts