复合文档格式(五) - 短流、短流容器流和短扇区分配表
生活随笔
收集整理的這篇文章主要介紹了
复合文档格式(五) - 短流、短流容器流和短扇区分配表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.概述
二.短流容器流 -?Short-Stream Container Stream
1. 短流容器流(short-stream container stream )像任何其他(長)用戶流一樣存儲:
- 第一個使用的扇區必須從目錄directory 中的根存儲條目(root storage )獲取,其SecID鏈包含在 扇區分配表(SAT)中
- 短流容器流(short-stream container stream?)所使用的所有扇區的數據是根據其SecID鏈的順序而來的
- 在下一步中,該流實際上被分為短扇區(short-sectors ),類似于主復合文檔文件中的扇區,但是沒有復合文檔頭結構。 因此,第一個短扇區short-sector
(SecID為 0)總是位于短流容器流內的偏移量0處。? - 在復合文檔頭部的第30 -31的2個字節指定了ssz的大小,最小為7,則扇區sector的大小為2的ssz次方
- 在復合文檔頭部的第32 - 33的2個字節指定了sssz的大小,短扇區的真實大小為2的sssz次方,最大值為扇區的大小,詳情看:http://blog.csdn.net/lipinganq/article/details/76737002
- short_sec_pos表示SecID對應的短扇區在短流容器流中的位置
- short_sec_size表示短扇區的大小
- sssz就是復合文檔頭中第32 - 33的2個字節指定了sssz的大小,則短扇區真實大小為2^sssz
- 如果sssz=6,SecID=5
- short_sec_pos(SecID) = SecID ? 2 ^sssz = 5 ? 2^6 = 5 ? 64 = 320
三.短扇區分配表 -?Short-Sector Allocation Table
1. 短扇區分配表(short-sector allocation table? SSAT)跟SAT類似,也是一個存儲SecID的數組,包含所有短流的SecID鏈,類似扇區分配表SAT包含標準流的SecID鏈 2. SSAT所使用的扇區中的第一個扇區的SecID在復合文檔的頭中指定了,由第60 - 63的4個字節指定,其余SecID鏈包含在扇區分配表SAT中 3. SSAT是通過read和串聯所有占據的扇區的內容構建的 4. 一個SSAT占據的扇區的內容: - sec_size表示一個扇區的大小,單位為字節
- 則SSAT占據的扇區可以存儲sec_size/4個SecID
5. SSAT的使用與SAT類似,區別在于SSAT中的SecID鏈指短流容器流中的短扇區
四.總結
1. 短扇區分配表存儲了短扇區的SecID,短扇區分配表扇區就是被SSAT所占據的扇區,即SSAT所使用的的扇區 2. SSAT使用的扇區的第一個扇區的SecID從復合文檔頭中獲取 3. SSAT由SAT管理,獲得SSAT使用的扇區的第一個扇區的SecID后,通過扇區之間形成的鏈,可以獲得SSAT所使用的所有扇區,形成完整的SSAT五.下一篇
下一篇 - 復合文檔格式(六) - 目錄Directory :http://blog.csdn.net/lipinganq/article/details/76828145總結
以上是生活随笔為你收集整理的复合文档格式(五) - 短流、短流容器流和短扇区分配表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php汉字转区位码,PHP中实现汉字转区
- 下一篇: C/C++与Python的语法差异