text: COM結構化儲存是微軟在Windows作業系統上開發的一種技術，以在一個檔案記憶體儲層次化的資料。嚴格講，術語“structured storage”是指COM的一套介面。並提供了有限形式的資料訪問。結構化儲存廣泛用於Microsoft Office應用程式。但從Office 2007開始預設使用基於XML的Office Open XML。SQL Server也使用結構化儲存。概述.結構化儲存是為了解決在一個檔案中存放多個數據物件的本質性困難。當修改一個物件從而改變其尺寸時，如果這些物件在檔案內是順序存放的，則被修改物件的尺寸擴大時所有在其後的物件都需要向後移動以騰出空間，被修改物件縮小尺寸時所有在其後的物件都需要向前移動。這樣的困難有很多種辦法應對，但應用程式開發者並不希望處理這樣低層次的二進位制檔案格式問題。結構化儲存把檔案系統的概念引入到檔案內部。在檔案內部構造一個樹狀層次結構。由儲存物件和流物件構成。根節點為根儲存，根儲存下面可以有子儲存或流物件。子儲存下面可以再有子儲存或流物件。儲存物件本身不包含資訊，它是子儲存和流物件的容器。流物件是葉子節點，是資料的載體。COM介面.簡介.結構化儲存提供了一種抽象，稱為“流”，用COM介面codice_1表示。一個流在概念上類似一個檔案，使用codice_1介面的方法來讀寫。流可以存在於記憶體中、檔案中，或其它流中。另外一個重要抽象是“storage”，表示為COM介面codice_3。一個storage在概念上類似於檔案系統的目錄。Storage可以包含流或其他storages。一個應用程式如果要把幾個資料物件儲存到一個檔案中，一種辦法是開啟一個codice_3以表示檔案，然後把 每個物件存入單獨的codice_1。結構化儲存的事務機制，針對寫模式而不是讀模式。建立、開啟儲存和流時可以指定事務模式。只有Commit後，所有的變化才提交到上級。revert可以恢復到上次commit以來的狀態。事務的實現是在記憶體中或臨時檔案中儲存檔案複製的方式。事務可以巢狀。增量訪問，可以減少儲存檔案的操作時間。對於檔案碎片，呼叫根儲存CopyTo解決。IStream介面.class IStream::public IUnknown方法：ReadWriteSeekCopyToCommit 把所有變化提交到包容該流物件的儲存物件。Revert rollback取消上次提交以來的所有操作。針對事務模式的流IStorage介面.class IStorage：public IUnknownCreateStreamOpenStream 操作子流物件，返回IStream介面指標CreateStorageOpenStorage 操作子儲存物件，返回IStorage介面指標EnumElements 列舉所有的子流物件和子儲存物件。commitRevert。針對事務模式的儲存。Stat 獲取儲存物件的CLSID識別符號SetClass 為儲存物件賦一個CLSID識別符號，並可透過Stat函式獲取此CLSID值。透過此CLSID值把儲存物件與一段可執行程式碼聯絡起來，當客戶程式希望執行與儲存物件相聯絡的程式碼時，它利用CLSID值，並呼叫 CoCreateInstamce函式建立一個COM物件，再把儲存物件交給COM物件，由它處理儲存物件。複合二進位制文件.Microsoft實現的一種稱為複合二進位制文件按需分配給新的流或增加尺寸的流。如果流被刪除或收縮尺寸，不再需要的扇區可以重新被其他流使用。使用複合二進位制文件的應用程式有：LockBytes物件.LockBytes物件是所有儲存介質的一種抽象。儲存介質描述稱為一般化的位元組流，LockBytes物件負責從位元組流中讀寫位元組。複合文件透過一個被稱為“LockBytes”的物件，把根儲存與底層的儲存介質聯絡起來，其他的子物件則透過根儲存與底層儲存介質進行資料通訊，從而實現了整個結構化儲存體系結構。複合文件透過LockBytes物件把根儲存物件與底層的檔案操作隔離開來，在訪問儲存物件或者流物件時避開了檔案控制代碼操作。LockBytes物件實現了ILockBytes介面以提供基本的讀寫操作。COM庫提供了預設的基於檔案控制代碼的LockBytes物件，以及基於記憶體的LockBytes物件。例如，可按照如下步驟建立基於記憶體的複合文件。其他方法：永久物件.概念上，永久物件與儲存物件和流物件沒有聯絡。永久物件可以把狀態資訊儲存下來，以後可以重建這樣的物件，且恢復到以前的狀態。可以很方便地使用COM的結構化儲存機制或別的機制來儲存永久物件的狀態。COM定義了四個常用的永久介面：IPersistStorage, IPersistStream, IPersistStreamInit 和IPersistFile。前三個介面使用的結構化儲存機制。後一個介面直接使用檔案。介面都包含三個基本函式已隱藏部分未翻譯內容，歡迎參與[ 翻譯]。Native Structured Storage.During the beta testing phase of Windows 2000, it included a feature titled Native Structured Storage (NSS) for storage of Structured Storage documents (like the binary Microsoft Office formats and the codice_7 file Windows Explorer uses to cache thumbnails) with each "Stream" that makes up a document stored in a separate NTFS data stream. It included utilities that automatically split up the streams in a regular Structured Storage document into NTFS data streams and vice versa. However, the feature was withdrawn after Beta 3 due to incompatibilities with other OS components, and any NSS files automatically converted to the single data stream format.
metadata: erhwenkuo/wikipedia-zhtw
metadata: COM結構化儲存
metadata: https://zh.wikipedia.org/wiki?curid=6009563