切换到宽版
  • 3073阅读
  • 0回复

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

上一主题 下一主题
离线hddl
 
只看楼主 倒序阅读 0 发表于: 2009-12-19
关键词: 数据
[post]第一章    仓库与流



复合文档的原理就像一个文件系统(文件系统:如FAT与NTFS)。复合文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。将复合文档想象成你的D盘,D盘用的是NTFS(NT File System)格式,流就相当于D盘里的文件,仓库就相当于D盘里的文件夹。

      流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(root storage)。

例:










第二章    扇区与扇区链



2.1 扇区与扇区标识



所有的流又分成更小的数据块,叫做数据扇区(sectors)。Sectors 可能包含控制数据或用户数据。

整个文件由一个头(Header)结构以及其后的所有Sectors组成。Sectors的大小在头中确定,且每个Sectors的大小都相同。

以下为示意图:

HEADER

SECTOR 0

SECTOR 1

SECTOR 2

SECTOR 3

SECTOR 4

SECTOR 5

SECTOR 6



Sectors 简单的以其在文件中的顺序列举,一个扇区的索引(从0开始)叫做扇区标识(SID:sector identifier)。SID是一个有符号的32位的整型值。

如果一个SID的值非负,就表示真正存在的那个Sector;如果为负,就表示特殊的含义。下表给出有效的特殊SID:

SID  Name                  Meaning                                         

–1  Free SID            空闲sector,可存在于文件中,但不是任何流的组成部分。

–2    End Of Chain SID      SID链的结束标记 (见2.2节)

–3  SAT SID                此Sector用于存放扇区配置表(SAT)(见4.2节)

–4  MSAT SID          此Sector用于存放主扇区配置表(MSAT)(见4.1节)



2.2 扇区链与扇区标识链



用于存储流数据的所有Sectors的列表叫做扇区链(Sector Chain)。这些Sectors可以是无序的。因此用于指定一个流的Sectors的顺序的SID数组就称为SID chain。一个SID chain总是以End Of Chain SID(-2)为结束标记。

例:一个流由4个Sector组成,其SID链为[1, 6, 3, 5, –2]。








流的SID链是通过扇区配置表构建的(见4.2节),但短流和以下两种内部流除外:

1.主扇区配置表,其从自身构建SID链(每个扇区包含下一个扇区的SID)。

2.扇区配置表,其通过主扇区配置表构建SID链
快速回复
限100 字节
欢迎来到中国数据恢复技术联盟,请勿发表暴力、色情、广
 
上一个 下一个