切换到宽版
  • 4331阅读
  • 1回复

复合文档文件格式研究(四) [复制链接]

上一主题 下一主题
离线hddl
 
只看楼主 倒序阅读 0 发表于: 2009-12-19
关键词: 复合文档
[post]第四章    扇区配置

4.1 主扇区配置表



主扇区配置表(MSAT:master sector allocation table)是一个SID数组,指明了所有用于存放扇区配置表(SAT:sector allocation table)的sector的SID。MSAT的大小(SID个数)就等于存放SAT的sector数,在头中指明。

MSAT的前109个SID也存放于头中,如果一个MSAT的SID数多余109个,那么多出来的SID将存放于sector中,头中已经指明了用于存放MSAT的第一个sector的SID。在用于存放MSAT的sector中的最后一个SID指向下一个用于存放MSAT的sector,如果没有下一个则为End Of Chain SID(-2)。

存放MSAT的sector的内容:(s_size表示sector的大小)

Offset            Size                  Contents                         

0                  s_size-4      MSAT的(s_size-4) / 4个SID的数组

s_size-4      4                  下一个用于存放MSAT的sector的SID,或-2(已为最后一个)



最后一个存放MSAT的sector可能未被完全填满,空闲的地方将被填上Free SID(-1)。



例:一个复合文档需要300个sector用于存放SAT,头中指定sector的大小为512字节,这说明一个sector可存放128个SID。MAST有300个SID,前109个放于头中,其余的191个将要占用2个sector来存放。此例假定第一个存放MSAT的sector为sector 1,则sector 1包含127个SID。第128个SID指向一个用于存放MSAT的sector,假定为sector 6,则sector 6包含剩下的64个SID(最后一个SID为-2,其他的值为-1)。



4.2 扇区配置表





      扇区配置表(SAT:sector allocation table)是一个SID数组,包含所有用户流(短流除外)和内部控制流(the short-stream container stream, 见5.1, the short-sector allocation table, 见5.2, and the directory, 见7)的SID链。SAT的大小(SID个数)就等于复合文档中所存在的sector的个数。

      SAT的建立就是通过按顺序读取MSAT中指定的sector中的内容。

存放SAT的sector的内容:(s_size表示sector的大小)

Offset            Size              Contents                             

0                  s_size            SAT的s_size / 4个SID的数组

                                                               

      当通过SAT为一个流创建SID链时,SAT数组的当前位置(array index)表示的就是当前的sector,而该位置存放的SID则指向下一个sector。

      SAT可能在任意位置包含Free SID(-1),这些sector将不被流使用。如果该位置包含End Of Chain SID(-2)表示一个流的结束。如果sector用于存放SAT则为SAT SID(-3),同样用于存放MSAT则为MSAT SID(-4)。

      一个SID链的起点从用户流的目录入口(directory entry,见6.2节)或头(内部控制流)或目录流本身获得。

例:一个复合文档包含一个用于存放SAT的sector(sector 1)和2个流。

Sector 1的内容如下图:








在位置1其值为-3,表明Sector 1是SAT的一部分。

其中一个流为内部目录流,假定头中指定其开始为Sector 0,SAT中位置0的值为2,位置2的值为3,位置3 的值为-2。因此目录流的SID链为[0, 2, 3, –2],即此目录流存放于3个sector中。

目录中包含一个用户流的入口假定为sector 10,从图中可看出此流的SID链为[10, 6, 7, 8, 9, –2]。
离线Manboo

只看该作者 1 发表于: 2010-05-19
支持啊 资料不错
有压力,更努力!
快速回复
限100 字节
告贴,不要在非指定版块发表水贴,谢谢合作。
 
上一个 下一个