zoukankan      html  css  js  c++  java
  • (转)DocFile 研究小记

    from:http://hi.baidu.com/umu618/blog/item/91b4a27723d7b818b151b966.html

      “微软复合文档二进制结构(Compound File Binary Format)”是一种结构化的存储格式,它在一个文件里模拟磁盘存储格式,使得文件内部变得像一个磁盘,用来存放结构化信息。微软没有公开具体格式,却 大量地使用,最常见的是 Offfice 的文件格式。符合微软复合文档二进制结构规范的对象叫 Storage 对象,Compound File 是一种 Storage 对象,DocFile 是一种 Compound File。虽然没公开具体规范,但幸好微软提供了访问这种格式的 API 和工具 DocFile Viewer,API 例如:

    StgIsStorageFile - 判断一个文件是不是 Storage 对象。

    StgOpenStorageEx - 打开 Storage 对象

    IStorage::EnumSTATSTG
    IStorage::OpenStorage
    IStorage::OpenStream
    IStorage::EnumElements

    IStream::Stat
    IStream::Seek
    IStream::Read

      更多具体编程信息请见《Structured Storage - The DocFile》、《Office 2007 .bin file format》。

      QQ 的消息保存在 MsgEx.db,其格式正是 DocFile,还有 XP 系统的图片缩略图缓存文件 Thumbs.db 也是 DocFile 格式。如下图:

      由于 MS Office 格式的流行,其他系统如 Linux 之类,想开发出可以访问 MS Office 文件的软件,对 DocFile 格式做了很多研究,由于研究出来的不是微软官方文档,所以取名“劳拉(LAOLA)格式”。具体请看《"劳拉"-神秘的微软办公软件文件格式》(URL 已经失效,请搜索一下这个标题吧)。

      DocFile 的文件头很有意思,十六进制是 D0 CF 11 E0 A1 B1 1A E1,注意看开头的“D0 CF 11 E0”,是不是和“DocFile”很像?

      DocFile Viewer 3.5 下载:http://umu.ys168.com/,Tools - VS - DFVIEW.7z (8KB)

    
  • 相关阅读:
    CCF NOI1079 合法C标识符
    CCF NOI1080 统计字符
    CCF NOI1076 进制转换
    CCF NOI1065 最小公倍数
    CCF NOI1139 高精度减法
    CCF NOI1138 高精度加法
    CCF NOI1115 找数
    CCF NOI1097 数列
    CCF NOI1089 高精度运算
    NUC1931 Problem D 区间素数【素数筛选】
  • 原文地址:https://www.cnblogs.com/zhyryxz/p/1987001.html
Copyright © 2011-2022 走看看