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