管理属性集

永久性属性集包含相关数据作为属性。 每个属性集都使用 FMTID 进行标识,GUID (一个全局唯一标识符) ,使应用程序能够访问属性集来标识属性集。 通过此标识,应用程序将解释该集包含的属性。

例如,字处理器中的字符格式属性或绘图程序中元素的呈现属性是属性集。

COM 定义 IPropertySetStorage 接口,以便于管理属性集。 通过此接口的方法,可以创建新的属性集,或者打开或删除现有属性集。 此外,它还提供了创建枚举器并提供指向其 IEnumSTATPROPSETSTG 接口的指针的方法。 可以调用此接口的方法以枚举对象上的 STATPROPSETSTG 结构,这将提供有关对象上所有属性集的信息。

创建或打开 IPropertyStorage 实例时,它类似于打开支持 IStorageIStream 的对象,因为需要指定要在其中打开接口的存储模式。 对于 IStorage,这些模式包括事务模式、读/写模式和共享模式。

使用调用 IPropertySetStorage::Create 创建属性集时,请指定属性集是简单还是非简单。 简单属性集包含可在属性集流中完全写入的类型,该流的大小受限制,在 Windows NT 4.0 及更早版本中不能大于 256 KB,在 Windows 2000、Windows XP 和 Windows Server 2003 中不能大于 1 MB。 但是,当需要在属性集中存储大量信息时,可以指定属性集不简单。 这允许你使用一个或多个类型,这些类型仅指定指向存储或流对象的指针。 这些类型VT_STREAM、VT_STREAMED OBJECT、VT_STORAGE 和 VT_STORED_OBJECT。

存储在这些属性中的数据不计入 Windows NT 4.0 或更低版本中的 256 KB 属性集大小限制,也不计入 Windows 2000、Windows XP 和 Windows Server 2003 中的 1 MB 限制。 但是,有关属性的数据(如其名称)确实适用。 此外,如果需要事务处理更新,属性集必须是非简单。 当然,打开这些类型会产生一定的性能损失,因为它需要打开具有指针的流或存储对象。

如果应用程序使用复合文件,则可以使用 COM 提供的这些接口的实现,这些接口在 COM 复合文件存储对象上实现。

每个属性集主要由一组逻辑连接的属性组成,如 管理属性中所述。

有关 COM 中属性集的详细信息,请参阅: