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