性能特征

调用 IPropertySetStorage 接口的 COM 复合文件实现来创建属性集会导致通过调用 IStorage::CreateStream 或 IStorage::CreateStorage 创建流或存储。 默认属性集在内存中创建,但不刷新到磁盘。 当调用 IPropertyStorage::WriteMultiple 时,它会在缓冲区内运行。

打开属性集时,将使用 IStorage::OpenStreamIStorage::OpenStorage 。 将整个属性集流读入连续内存。 然后,IPropertyStorage::ReadMultiple 操作通过读取内存缓冲区进行操作。 因此,由于磁盘读取) ,首次访问在时间 (方面成本高昂,但后续访问非常高效。 写入费用可能稍高一些,因为可能需要对基础流执行 SetSize 操作,以确保在添加数据时磁盘空间可用。

不保证 IPropertyStorage::WriteMultiple 是否会刷新更新。 通常,客户端应假定 IPropertyStorage::WriteMultiple 仅更新内存缓冲区中的 。 若要刷新数据,应调用 IPropertyStorage::CommitIUnknown::Release (最新版本) 。

此设计意味着 WriteMultiple 可能会成功,但数据实际上不是持久写入的。

注意

属性集流的此大小不能超过 256K 字节。