COM 中的属性集实现
虽然永久性属性集的使用可能未完全点击,但目前有两个主要用途:
- 使用文档等对象存储摘要信息
- 在对象之间传输属性数据
COM 属性集旨在存储适合以中等大小的细化值集合表示的数据。 如果数据集太大,因此不可行,应分为单独的流、存储和/或属性集。 COM 属性集数据格式不是为许多微小对象的数据库提供替代。
COM 为各种对象提供属性集接口的实现,以及三个帮助程序函数。 以下部分介绍这些实现的一些性能特征。 有关特定接口以及如何获取指向这些接口的指针的详细信息,请参阅 COM 参考部分中的以下内容:
-
复合文件实现提供 IStorage 和 IStream 接口,还提供 IPropertySetStorage 和 IPropertyStorage 接口。 鉴于 IStorage的复合文件实现,IPropertySetStorage 接口可以通过调用 IUnknown::QueryInterface来获取。
IPropertySetStorage–NTFS 文件系统实现
对于非复合文件的 NTFS 文件,还可以获取 IPropertySetStorage 和 IPropertyStorage 接口。 因此,可以获取 NTFS 卷上所有文件的这些接口。
-
实例化 IPropertySetStorage 和 IPropertyStorage 的此实现时,会向它提供一个指向支持 IStorage 接口的对象的指针。 然后,它作该存储对象中的属性集存储。 因此,可以在支持的任何对象上访问和作属性集。
-
提供 IPropertySetStorage 接口的实现时需要考虑几个问题。 请参阅 COM 参考部分中 这些 实现注意事项。
此外,还有四个帮助程序函数,旨在帮助处理已从属性集读取到内存中的属性(PROPVARIANT 结构):
以下部分更详细地讨论了 COM 中的属性集实现: