PST文件格式解读--PST文件的逻辑结构
来源:互联网 发布:js只能输入数字和英文 编辑:程序博客网 时间:2024/06/06 04:20
PST 文件是 OUTLOOK 个人文件夹文件,它是独立的、结构化的二进制文件,不需要任何的外部依赖。每一个PST文件代表一个消息存储器message store,包含有任意层次结构的文件对象Folder objects,下面又包含消息对象Message objects,消息对象下面又包含附件对象Attachment objects。文件对象、消息对象、附件对象都存储在属性中,包含有特定邮件项目的所有信息。
PST文件在逻辑上分为三层:the NDB (Node Database) layer, the LTP(Lists, Tables, and Properties) layer, and the Messaging layer.
1. Node Database (NDB) Layer
NDB层代表数据库结点,是PST文件最低层的存储结构。NDB层包括头部(header)、文件分配信息(fileallocation information)、块(blocks)、结点(nodes)、两颗B树:结点B树和块B树(the Node BTree (NBT)and the Block BTree (BBT).)
NBT包含了指向PST文件中所有可访问结点的指针,B树的高效搜索方式能够快速的定位任意结点。每一个结点由四个属性集组成:NID,parent NID, data BID(指向与该结点关联的数据块), andsubnodeBID.
注:NID编号在整个PST文件里面是唯一的,可以查找NBT得到该结点。而Subnode NID?只是在一个结点里面是唯一的,该节点不能从NBT查找得到。
BBT包含了指向PST文件中所有数据块的指针,每一个块也是由四个属性集组成:BID,IB, CB, and CREF。
其中IB是该块在文件内的偏移量,CB是存储在该数据块内的字节数,CREF是该数据块的引用次数。
NBT and BBT树根的位置的都能从PST文件头部相关字段获得。如下图所示:
下图描述的结点(node)和块(block)之间的关系:
2. Lists, Tables, and Properties (LTP) Layer
LTP层是构建NDB结构顶部的一个高级概念,LTP层的核心元素是属性上下文theProperty Context (PC) and 表上下文TableContext (TC).每一个PC或TC也存放在一个单一的结点中,LTP层使用NIDS去标识PC和TC。
为了有效地实现PCs和TCs,LTP层在每个NDB节点顶层采用以下两种类型的数据结构。
Heap-on-Node(HN)
HN是在结点之上实现的一个堆数据结构,HN能够将一个结点的数据流细分为小的、大小可变的片段,它的主要用途是将各种字符串存储到数据块中。
BTree-on-Heap(BTH)
BTH是HN内部的一个数据结构。HN提供快速访问B-树的方法,而BTH提供一种快速搜索数据的方法。PCs就被实现为BTHs。
3. Messaging Layer
The Messaginglayer包含有让LTB结构和NDB结构组合起来被解释为文件对象、消息对象、附件对象和属性的高级规则和业务逻辑。该层的规则使得修改后的PST文件能够被成功的读取。
- PST文件格式解读--PST文件的逻辑结构
- PST文件格式解读--PST文件的逻辑结构
- 备份outlook的pst文件
- 帮助outlook的pst文件修复
- 帮助outlook的pst文件修复
- PST文件太大了
- 如何解析邮件PST文件
- Outlook不能访问*.pst文件
- OUTLOOK 的PST文件和OST文件的区别
- 修复损坏的*.pst文件(个人文件夹)----outlook应用
- 修复 office outlook 的pst邮件文件损坏
- 第2次恢复outlook的.pst文件
- mapi pst
- 得到受惠,以执行邮件迁移NSF到PST文件格式的MS Outlook
- 修复outlook个人文件夹pst文件
- GMT和PST--关于时区的知识
- outlook的archive.pst丢失后
- GMT和PST--关于时区的知识
- java基础巩固---线程池ExecutorService
- 前后端接口设计疑惑
- CSS 布局
- 最新的 CocoaPods 的使用教程 上传podspec
- ArrayList非线程安全、Vector线程安全原理
- PST文件格式解读--PST文件的逻辑结构
- Android群英传笔记-第2章 Android开发工具接触
- 回文串问题 Palindrome
- Java利器之UML类图详解
- 野指针
- 我从编程总结的 22 个经验
- React Native 单位详细说明
- [BZOJ1552]robotic sort SPlay区间翻转
- Kafka集群搭建之路