性能特征

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

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

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

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

注意

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