共用方式為


結構化記憶體介面

結構化記憶體服務會組織成三種 介面類別,。 每個集合都代表複合檔案、它所包含的物件,以及儲存這些個別元件之實體媒體之間的連續間接或抽象層級。

介面的第一個類別包含 IStorageIStreamIRootStorage。 前兩個介面會定義物件如何儲存在複合檔案內。 這些介面提供開啟儲存元素、認可和還原變更、複製和移動專案,以及讀取和寫入數據流的方法。 這些介面無法辨識個別物件的原生數據格式,因此沒有方法可將這些物件儲存至永續性記憶體。 IRootStorage 介面具有單一方法,可將複合檔與基礎文件系統名稱產生關聯。 用戶端必須為其複合檔案實作這些介面。

介面的第二個類別包含 IPersist 介面,對象實作這些介面來管理其持續性數據。 這些介面提供讀取個別對象數據格式的方法,因此知道如何儲存它們。 對象負責實作這些介面,因為用戶端不知道其巢狀物件的原生數據格式。 不過,這些介面並不知道特定的實體儲存媒體。

第三個類別包含單一介面,ILockBytes,提供將檔案寫入特定實體媒體的方法,例如硬碟或磁帶機。 不過,大部分的應用程式都不會實作 ILockBytes 介面,因為 COM 已經提供兩種最常見情況的實作,也就是檔案型實作和記憶體型實作。 複合檔案儲存物件會呼叫 ILockBytes 方法,您不會直接在實作中呼叫它們。

複合文件實作限制

結構化儲存架構的 COM 實作稱為 複合檔案。 如在複合檔案中實作的記憶體物件,包括 IPropertyStorageIPropertySetStorage 介面的實作。

呼叫 StgCreateStorageEx 函式來建立新的複合文件物件,或 StgOpenStorageEx 來開啟先前建立的複合檔案,以取得這些介面之複合檔案實作的指標。

取得這些介面之複合檔案實作指標的替代方法是呼叫較舊且更有限的 stgCreateDocfileStgOpenStorage 函式。 這四個函式都會被視為複合檔案實作。

複合檔案實作可以設定為使用512或4096個字節扇區,如 STGOPTIONS 結構中所定義。

複合檔案的複合檔案實作受限於下列實作條件約束。

限制 複合檔案
檔案大小限制: 512:2 GB(GB) 4096:最高文件系統限制
開啟專案所需的堆積大小上限: 512:4 MB(MB) 4096:最多虛擬記憶體限制
同時開啟根目錄 (開啟相同的檔案): 如果指定STGM_READ和STGM_SHARE_DENY_WRITE,則限制是由文件系統限制所決定。 否則,相同檔案的並行根開啟限製為20個。
檔案中的項目數目: 512:無限制,但如果元素編號在千 4096:無限制,效能可能會降低

由於 4 MB 堆積大小限制,交易模式中開啟的元素數目通常限制為數千個元素。