屬性集的儲存和資料流程物件

程式設計人員會指定屬性集是在建立屬性集時儲存在儲存體或資料流程中。 在 grfFlags 參數中傳遞至 IPropertySetStorage::Create 方法的 PROPSETFLAG_NONSIMPLE 列舉值,表示這一點。 儲存屬性集的設定會提供適當的應用程式控制,以透過 IPropertySetStorage 介面與 COM 屬性集完全互通。

如果已設定PROPSETFLAG_NONSIMPLE旗標,則屬性集會儲存在儲存體物件中,而且可以將非簡單屬性值寫入其中。 非簡單值包含 VARTYPE 為 VT_STORAGE、VT_STREAM、VT_STORED_OBJECT或VT_STREAMED_OBJECT的值。 如需 VARTYPE 值及其使用方式的詳細資訊,請參閱 PROPVARIANT 結構。

如果未設定PROPSETFLAG_NONSIMPLE旗標,則只能將簡單值寫入屬性集。

在非簡單屬性集的儲存物件中,會建立名為 Contents 的資料流程。 這是屬性集的主要資料流程,並保留所有簡單屬性值。 非簡單屬性值 (資料流程和儲存體) 會儲存在設定為子資料流程和儲存體的屬性主要儲存物件底下。 也就是說,這些非簡單值會儲存為 Contents 資料流程的同層級值。 同層級資料流程和儲存體的名稱取決於實作,並儲存在 Contents 資料流程中,類似于儲存簡單字串屬性的方式。