IPropertySetStorage-Compound檔案實作
COM 複合檔案儲存物件實作包含IPropertyStorage的實作、管理單一永續性屬性集的介面,以及管理永續性屬性集群組的IPropertySetStorage介面。
若要取得 IPropertySetStorage之複合檔案實作的指標,請將識別碼的標頭定義名稱 IID_IStorage指定為 riid 參數,或使用 StgCreateStorageEx 或 StgOpenStorageEx 函式。 在這兩種情況下,請將 STGFMT_STORAGE 指定為 stgfmt 參數。 (STGFMT_ANY也可以在 StgOpenStorageEx.) 的情況下指定 ,同時將介面識別碼的標頭定義名稱指定為 riid 參數 (IID) IID_IPropertySetStorage。 這兩個函式都會提供物件 IPropertySetStorage 介面的指標。
取得複合檔案實作指標的另一種方式是指定識別碼的標頭定義名稱,IID_IStorage為 riid 參數,或使用 StgCreateDocfile 或 StgOpenStorage 函式。 這會提供物件 IStorage 介面的指標。 當您想要處理永續性屬性集時,請呼叫IPropertySetStorage介面的IStorage::QueryInterface。
使用 IPropertySetStorage 的時機
呼叫 IPropertySetStorage 的方法,以在目前的複合檔案屬性集儲存區中建立、開啟或刪除屬性集。 另外還有一個 方法 IPropertySetStorage::Enum,提供列舉值指標,可用來列舉儲存體中的屬性集。
方法
在目前的複合檔案儲存體中建立新的屬性集,並在傳回時提供 IPropertyStorage 複合檔案實作的介面指標。 在此實作中,只有在指定PROPSETFLAG_NONSIMPLE時,才能交易屬性集。 此方法需要STGM_SHARE_EXCLUSIVE grfMode 參數中指定的共用模式,而且) 不支援存取模式STGM_READ或STGM_READWRITE (STGM_WRITE模式。
開啟目前屬性儲存體中的現有屬性集。 傳回時,它會提供 IPropertyStorage複合檔案實作的介面指標。 此方法需要STGM_SHARE_EXCLUSIVE grfMode 參數中指定的共用模式,而且不支援存取模式STGM_READ或STGM_READWRITE (STGM_WRITE) 。
刪除此屬性儲存體中的屬性集。
建立用來列舉 STATPROPSETSTG 結構的 物件。 每個 STATPROPSETSTG 結構都會提供單一屬性集的相關資料。
備註
從 Windows 2000 開始, IPropertySetStorage 的複合檔案實作支援簡單模式。 簡單模式是藉由指定 StgCreateStorageEx 和 StgOpenStorageEx 函式的STGM_SIMPLE旗標來表示。 如果複合檔案以簡單模式開啟,相關聯的 IPropertySetStorage 實作 會受到限制,如下所示:
- 只能建立簡單的屬性集。 也就是說,在IPropertySetStorage::Create方法的grfFlags參數中指定PROPSETFLAG_NONSIMPLE值會導致錯誤。
- 使用 stgCreateStorageEx STGM_SIMPLE 建立複合檔案並查詢 IPropertySetStorage 介面之後,您只能呼叫 IPropertySetStorage::Create 一次。 然後,您必須先釋放 IPropertyStorage 介面,才能再次呼叫 Create 方法。 如需簡單模式的詳細資訊,請參閱 STGM 常數。
- 您無法使用 IPropertySetStorage::Open 方法,在使用 StgCreateStorageEx 建立儲存體物件之後開啟屬性集。 相反地,您必須先使用 StgOpenStorageEx ,才能查詢 IPropertySetStorage 並呼叫 Open 方法。
- 使用 STGM_SIMPLE 旗標開啟複合檔案並使用IPropertySetStorage介面查詢StgOpenStorageEx之後,您可以使用IPropertySetStorage::Open一次開啟一個設定的屬性。 此外,可能無法在屬性集開啟時增加屬性集的總大小。
無法交易簡單屬性集。 除非您也指定grfFlags參數中的PROPSETFLAG_NONSIMPLE,否則您無法在Create和Open方法的grfmode參數中指定STGM_TRANSACTED。 請注意,簡單和非簡單屬性集與上述簡單模式屬性集無關。 如需簡單和非簡單屬性集的詳細資訊,請參閱 屬性集的儲存和資料流程物件。
注意
DocumentSummaryInformation 和 UserDefined 屬性集是唯一的,因為它們可能有兩個屬性集區段。 如需詳細資訊,請參閱 DocumentSummaryInformation 和 UserDefined 屬性集。
相關主題