共用方式為


結構化儲存體介面

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

介面的第一個類別是由 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 堆積大小限制,交易模式中開啟的專案數目通常限制為數千個元素。