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