复合文档文件格式研究.doc

复合文档文件格式研究.doc

ID:56101300

大小:156.50 KB

页数:12页

时间:2020-06-19

复合文档文件格式研究.doc_第1页
复合文档文件格式研究.doc_第2页
复合文档文件格式研究.doc_第3页
复合文档文件格式研究.doc_第4页
复合文档文件格式研究.doc_第5页
资源描述:

《复合文档文件格式研究.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、复合文档文件格式研究前言复合文档(CompoundDocument)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。目前建立复合文档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。MicrosoftWindows就是使用这种技术,叫做“OLE2storagefileformat”或“MicrosoftOfficecompatiblestoragefileformat”。当然Excel、Word等都是用这种格式存储的。本文主

2、要研究复合文档的二进制结构。目录第一章仓库与流(StoragesandStreams)第二章扇区与扇区链(SectorsandSectorChains)第三章复合文档头(CompoundDocumentHeader)第四章扇区配置(SectorAllocation)第五章短流(Short-Streams)第六章目录(Directory)第七章Excel文件实例剖析第一章仓库与流复合文档的原理就像一个文件系统(文件系统:如FAT与NTFS)。复合文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。将复合文档想象成你的D盘,D盘用的是NTFS(N

3、TFileSystem)格式,流就相当于D盘里的文件,仓库就相当于D盘里的文件夹。流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(rootstorage)。例:第二章扇区与扇区链2.1扇区与扇区标识所有的流又分成更小的数据块,叫做数据扇区(sectors)。Sectors可能包含控制数据或用户数据。整个文件由一个头(Header)结构以及其后的所有Sectors组成。Sectors的大小在头中确定,且每个Sectors的大小都相同。以下为示意图:HEADERSECTOR0SECTOR1SECTOR2SECT

4、OR3SECTOR4SECTOR5SECTOR6┆Sectors简单的以其在文件中的顺序列举,一个扇区的索引(从0开始)叫做扇区标识(SID:sectoridentifier)。SID是一个有符号的32位的整型值。如果一个SID的值非负,就表示真正存在的那个Sector;如果为负,就表示特殊的含义。下表给出有效的特殊SID:SIDNameMeaning–1FreeSID空闲sector,可存在于文件中,但不是任何流的组成部分。–2EndOfChainSIDSID链的结束标记(见2.2节)–3SATSID此Sector用于存放扇区配置表(SAT)(见4.2节)–4MSATSID此

5、Sector用于存放主扇区配置表(MSAT)(见4.1节)2.2扇区链与扇区标识链用于存储流数据的所有Sectors的列表叫做扇区链(SectorChain)。这些Sectors可以是无序的。因此用于指定一个流的Sectors的顺序的SID数组就称为SIDchain。一个SIDchain总是以EndOfChainSID(-2)为结束标记。例:一个流由4个Sector组成,其SID链为[1,6,3,5,–2]。流的SID链是通过扇区配置表构建的(见4.2节),但短流和以下两种内部流除外:1.主扇区配置表,其从自身构建SID链(每个扇区包含下一个扇区的SID)。2.扇区配置表,其通

6、过主扇区配置表构建SID链。第三章复合文档头3.1复合文档头的内容复合文档头在文件的开始,且其大小必定为512字节。这意味着第一个Sector的开始相对文件的偏移量为512字节。复合文档头的结构如下:OffsetSizeContents08复合文档文件标识:D0HCFH11HE0HA1HB1H1AHE1H816此文件的唯一标识(不重要,可全部为0)242文件格式修订号(一般为003EH)262文件格式版本号(一般为0003H)282字节顺序规则标识(见3.2)::FEHFFH=Little-EndianFFHFEH=Big-Endian302复合文档中sector的大小(ssz

7、),以2的幂形式存储,sector实际大小为s_size=2ssz字节(一般为9即512字节,最小值为7即128字节)322short-sector的大小(见5.1),以2的幂形式存储,short-sector实际大小为s_s_size=2sssz字节(一般为6即64字节,最大为sector的大小)3410Notused444用于存放扇区配置表(SAT)的sector总数484用于存放目录流的第一个sector的SID(见6)524Notused564标准流的最小大小(一般为4096byte

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。