FSRTL_PER_FILE_CONTEXT结构 (ntifs.h)
旧文件系统筛选器驱动程序可以使用 FSRTL_PER_FILE_CONTEXT 结构将特定于驱动程序的上下文信息关联到打开的文件。
语法
typedef struct _FSRTL_PER_FILE_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
成员
Links
此结构的链接位于与同一文件关联的所有每个文件上下文结构列表中。 FsRtlInsertPerFileContext 将此成员插入文件的所有每文件上下文结构列表中。
OwnerId
指向筛选器驱动程序分配的缓冲区的指针,该缓冲区唯一标识每个文件的上下文结构的所有者。 此变量的格式特定于筛选器驱动程序。 筛选器驱动程序必须将此成员设置为非NULL 值。
InstanceId
指向筛选器驱动程序分配的缓冲区的指针,该缓冲区可用于区分同一筛选器驱动程序创建的按文件上下文结构。 此变量的格式特定于筛选器驱动程序。 筛选器驱动程序可以将此成员设置为 NULL。
FreeCallback
指向释放每个文件上下文结构的 回调例程 的指针。 筛选器驱动程序必须将此成员设置为非NULL 值。
言论
为了将上下文信息与文件相关联,旧筛选器驱动程序首先分配 FSRTL_PER_FILE_CONTEXT 结构,并使用 FsRtlInsertPerFileContext初始化它。 然后,驱动程序使用 FsRtlInsertPerFileContext 将该 FSRTL_PER_FILE_CONTEXT 对象与文件相关联。 当系统拆毁文件的文件上下文对象时,它会调用 FsRtlTeardownPerFileContexts,该对象调用 FSRTL_PER_FILE_CONTEXT 对象中指定的 FreeCallback 例程。 该回调必须释放特定于驱动程序的上下文对象。
筛选器编写器应选择一个 OwnerID 值,该值既有意义又方便,例如驱动程序对象或设备对象的地址。
筛选器编写器应选择一个 InstanceID 值,该值既有意义又方便,例如文件的文件上下文对象的地址。 使用 FsRtlGetPerFileContextPointer 宏从文件对象中检索该地址。
FSRTL_PER_FILE_CONTEXT 结构可用于 as-is或嵌入到驱动程序定义的每个文件上下文结构中。
可以从分页池或非分页池分配 FSRTL_PER_FILE_CONTEXT 结构。
FsRtlInitPerFileContext 宏初始化 FSRTL_PER_FILE_CONTEXT 结构。
参数
FileContext
FSRTL_PER_FILE_CONTEXT
要初始化的FSRTL_PER_FILE_CONTEXT对象。
OwnerId
PVOID
指向筛选器驱动程序分配的变量的指针,该变量唯一标识每个文件上下文结构的所有者。 格式特定于筛选器驱动程序。 此参数必须具有非NULL 值。
InstanceId
PVOID
指向筛选器驱动程序分配的变量的指针,该变量唯一标识每个文件上下文结构的所有者。 格式特定于筛选器驱动程序。 此参数必须具有非NULL 值。
FreeCallback
PFREE_FUNCTION
指向释放每个文件上下文结构的 回调例程 的指针。
返回值
VOID
没有。
在调用 FsRtlInsertPerFileContext之前,必须使用此宏。
筛选器编写器应选择一个 OwnerID 值,该值既有意义又方便,例如驱动程序对象或设备对象的地址。
筛选器编写器应使用 InstanceID 值,该值既有意义又方便,例如文件的文件上下文对象的地址。 使用 FsRtlGetPerFileContextPointer 宏从文件对象中检索该地址。
有关如何使用和创建上下文对象的详细信息,请参阅旧文件系统筛选器驱动程序中的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从Windows Vista 开始可用。 |
标头 | ntifs.h (包括 Fltkernel.h、 Ntifs.h) |
另请参阅
在旧文件系统筛选器驱动程序 中跟踪 Per-File 上下文