效能特性
呼叫 IPropertySetStorage 介面的 COM 複合檔案實作,建立屬性集會導致透過呼叫 IStorage::CreateStream或IStorage::CreateStorage建立數據流或記憶體。 默認屬性集會在記憶體中建立,但不會排清到磁碟。 當呼叫 IPropertyStorage::WriteMultiple時,它會在緩衝區內運作。
開啟屬性集時,會使用 IStorage::OpenStream 或 IStorage::OpenStorage::OpenStorage。 整個屬性集數據流會讀取到連續記憶體中。 IPropertyStorage::ReadMultiple 作業,然後藉由讀取記憶體緩衝區來作。 因此,第一次存取在時間方面很昂貴(因為磁碟讀取),但後續的存取效率很高。 寫入可能會稍微昂貴一點,因為可能需要基礎數據流上的 SetSize 作業,以確保在加入數據時可以使用磁碟空間。
不保證 IPropertyStorage::WriteMultiple 是否會排清更新。 一般而言,客戶端應該假設 IPropertyStorage::WriteMultiple 只會更新記憶體緩衝區中的 。 若要排清數據,應該呼叫 IPropertyStorage::Commit 或 IUnknown::Release (last release) 。
此設計表示 WriteMultiple 可能會成功,但數據實際上不會持續寫入。
注意
這個屬性集數據流的大小不能超過 256K 個字節。