lovehunterboy
驱动小牛
驱动小牛
  • 注册日期2008-05-29
  • 最后登录2010-04-16
  • 粉丝2
  • 关注0
  • 积分67分
  • 威望463点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1932回复:3

File Streams, Stream Contexts, and Per-Stream Contexts

楼主#
更多 发布于:2008-09-16 16:23
搞了半天也不知道对不,请大牛指点,特别地:Per-Stream Contexts这个术语不知道怎么译?
文件流是一个用来记录文件数据的字节序列。通常一个文件有一个文件流,即文件的默认数据流。然而,在支持多数据流的文件系统上,每个文件能有多个文件流。它们其中一个是默认的数据流,该数据流是没有命名的。其它的是被命名的可选的数据流。当打开一个文件时,实际上打开了一个特定的文件流。
    当一个文件系统第一次打开一个文件流,它产生一个文件系统流上下文结构(例如文件控制块或流控制块),并且保存这个结构地址在相应的文件对像的成员FsContext里。
    对于本地文件系统,如果已经打开的文件流被再次打开(比如在共享的读方式),IO子系统产生另一个文件对像,但是文件系统不产生新的文件流上下文。两个文件对像接受同一个流上下文结构地址。因此,对于本地文件系统,流上下文指针唯一地标识一个文件流。
    对于支持per-stream上下文的网络文件系统,如果一个已经打开的流用同样的网络共享名或IP地址再次被打开,这种方式和本地文件系统是一样的。IO子系统产生一个新的文件对像,但文件系统不产生新的流上下文,而分配一个同样的FsContext指针给这两个文件对像。然而如果文件流用不同的路径(例如,一个不同的共享名,或一个用共享名已经打开的文件的IP,文件系统会产生一个新的流上下文。因此,对于支持per-stream上下文的网络文件系统,FsContext指针不是唯一地标识一个文件流。
    一个per-stream上下文是过滤驱动定义的结构,这个结构包含FSRTL_PER_STREAM_CONTEXT 结构。过滤驱动用这个结构来跟踪每个被文件系统打开的文件流的信息。
    支持per-stream的文件系统:在XP和以后的版本,支持per-stream上下文的文件系统必须用含有FSRTL_PER_STREAM_CONTEXT结构的流上下文结构。
    文件系统有一个特定的文件流相关的per-stream上下文全局列表。当文件系统为文件流产生一个新流上下文 (FSRTL_ADVANCED_FCB_HEADER object)时,它会调用 FsRtlSetupAdvancedHeader 来初始这个列表。当一个文件系统过滤驱动调用FsRtlInsertPerStreamContext,过滤驱动就会产生per-stream上下文并把它加到这个全局列表。
    当一个文件系统删除它的文件流的流上下文时,它会调用FsRtlTeardownPerStreamContexts 来释放所有的与文件系统相关的per-stream上下文。这个例程调用FreeCallback 来为在全局列表中的每个per-stream上下文释放。注意:FreeCallback 必须断定文件流的文件对像已经被释放。
    为了询问文件系统是否支持代表指定文件对像的文件流per-stream上下文,要调用FsRtlSupportsPerStreamContexts 。注意:一个文件系统可能对一些类型的文件支持per-stream上下文,而另一些则不支持。(比如,NTFS和FAT当前都不支持分页文件per-stream上下文。因此如果FsRtlSupportsPerStreamContexts对一个文件流返回TRUE,并不意味着它对所有的文件流会返回TRUE。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2008-09-17 07:59
我们在文件系统中看到的文件实际上是流。一个文件有可能包括一个主的数据流和n个附加流。fat32只支持主流,没有附加流。ntfs支持多个附加流。

perstreamcontext有点象fcb ,但是它是在文件系统层面的,fcb对应一个文件,perstream对应的是一个流,一个流在系统中多次打开时,只存在一个perstreamcontext
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
neak47
驱动小牛
驱动小牛
  • 注册日期2009-05-25
  • 最后登录2016-01-09
  • 粉丝4
  • 关注0
  • 积分140分
  • 威望1221点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分1分
板凳#
发布于:2009-08-30 12:11
d我顶顶
lcjoo
驱动牛犊
驱动牛犊
  • 注册日期2007-02-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望351点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-10-12 20:28
这么好的文章!!!
游客

返回顶部