属性和属性集

虽然自动化和 Microsoft ActiveX 控件提供的运行时属性类型很重要,但它们不能直接满足将信息与持久存储在文件系统中的对象一起存储的需求。 这些实体可能包括 (结构化、复合等) 、目录和摘要目录的文件。 COM 为这些永久性属性提供了标准序列化格式,以及一组接口和函数,可用于创建和操作属性集及其属性。

永久性属性存储为集,一个或多个集可能与文件系统实体相关联。 这些永久性属性集旨在用于存储适合表示为细粒度值的集合的数据。 它们不用作大型数据库。 它们可用于在系统上存储有关对象的摘要信息,然后,任何其他了解如何解释该属性集的对象都可以访问这些信息。

以前版本的 COM 很少指定属性及其用法,但确实定义了一种序列化格式,允许开发人员在 IStorage 实例中存储属性和属性集。 还定义了单个属性集的属性标识符和语义,用于文档的摘要信息。 当时,需要直接创建和操作该结构作为数据流。 请参阅 结构化存储序列化属性集格式

但是,现在,COM 定义了两个主要接口来管理属性集:

当这些接口在支持 IStorage 接口 ((如复合文件) )的对象上实现时,不再需要直接处理序列化格式。 通过 IPropertySetStorageIPropertyStorage 编写属性会创建完全符合 COM 属性集格式的数据,就像通过 IStorage 方法查看的那样。 反之亦然 - 使用 IStorage 写入 COM 属性集格式的属性通过 IPropertySetStorageIPropertyStorage (可见,但你不能期望通过 IStream 写入,并且通过 IPropertyStorage 立即提供属性,反之亦然) 。

IPropertySetStorage 接口定义创建和管理属性集的方法。 IPropertyStorage 接口直接操作属性集中的属性。 通过调用这些接口的方法,应用程序开发人员可以管理适用于给定文件系统实体的任何属性集。 使用这些接口可为属性提供一个经过优化的读取和写入实现,而不是在每个应用程序中都有一个实现,其中可能存在性能瓶颈,例如不断寻找。 可以实现接口来增强性能,以便通过更高效的缓存等方式更快地读取和写入属性。 此外, IPropertyStorageIPropertySetStorage 允许在不支持 IStorage 的实体上操作属性,尽管通常大多数应用程序不会这样做。

本节包含下列主题:

COM 中的属性集实现

属性集注意事项

管理属性

管理属性集

存储属性集

性能特征