结构化存储序列化属性集格式
持久属性集提供一个选项用于在文件系统实体中存储数据。 建议使用属性和属性集中介绍的 IPropertySetStorage 和 IPropertyStorage 接口来创建和管理它们。
属性集由标记的值部分组成,部分由格式标识符 (FMTID) 唯一标识。 每个属性都包含一个属性标识符和一个表示值的类型指示器。 存储在属性集中的每个值都有一个唯一的属性标识符,用于区分属性。 类型指示器描述值中的数据表示形式。
使用 IPropertySetStorage 和 IPropertyStorage 接口时,无需处理 COM 序列化属性集格式结构。 有关详细信息,请参阅列出的主题:
属性集中的所有数据元素都存储在 Intel 表示 (中,即以小端字节顺序) 。
COM 为属性集定义标准的序列化数据格式。 处理序列化格式(而不是使用接口)时,属性集具有以下特征:
- 属性集允许不同的应用程序创建其自己的独立属性集来为应用程序提供服务。
- 属性集可以存储在单个 IStream 实例中,也可以存储在包含多个流的 IStorage 实例中。 属性集只是另一种数据类型,可以以多种不同形式的内存中存储或磁盘上存储。 有关为存储对象创建字符串名称的详细信息和建议的约定,请参阅 存储对象命名约定。
- 属性集允许包含描述内容的显示名称字典。 建议使用一组用于选择属性名称的约定。 有关此可选字典的详细信息,请参阅 保留的属性标识符,包括 属性 ID 0。
属性集流分为三个主要部分:
- 标头
- FORMATID/offset 对
- 包含实际属性集值的节
属性集流的总长度必须小于或等于 256K。 以下各节、 属性集标头、 格式标识符/偏移量对和 节 (包括 属性标识符/偏移量对) ,以及支持主题,介绍了构成属性集数据格式的各个组件。
注意
本文档的早期版本介绍了对属性集流的扩展,其中允许多个节,但已修改为在属性流中提供一个节。 一个例外是 DocumentSummaryInformation 和用户定义属性集。