StorageLayout 結構 (objidl.h)

StorageLayout 結構描述單一數據區塊,包括其名稱、位置和長度。 若要優化複合檔案,應用程式或配置工具會在呼叫 ILayoutStorage::LayoutScript 中傳遞 StorageLayout 結構的數位。

語法

typedef struct tagStorageLayout {
  DWORD         LayoutType;
  OLECHAR       *pwcsElementName;
  LARGE_INTEGER cOffset;
  LARGE_INTEGER cBytes;
} StorageLayout;

成員

LayoutType

要寫入的項目類型。 值取自 STGTY 列舉。 STGTY_STREAM 表示讀取 pwcsElementName 所命名的數據區塊。 STGTY_STORAGE 表示開啟 pwcsElementName 中指定的記憶體。 STGTY_REPEAT 用於多媒體應用程式中,以介面音訊、視訊、文字和其他元素。 開啟 STGTY_REPEAT 值表示後續元素重複指定的次數。 結尾 STGTY_REPEAT 值會標示要重複的項目結尾。 允許巢狀 STGTY_REPEAT 值組。

pwcsElementName

記憶體或數據流的 Null 終止 Unicode 字串名稱。 如果專案是子記憶體或內嵌物件,則必須指定完整儲存路徑;例如,“RootStorageName\SubStorageName\Substream”。

cOffset

其中 LayoutType 成員的值 是STGTY_STREAM,這個旗標會將開始位移指定到 pwscElementName 成員中名為 的數據流。

其中 LayoutTypeSTGTY_STORAGE,此旗標應設定為零。

其中 LayoutTypeSTGTY_REPEAT,此旗標應設定為零。

cBytes

pwcsElementName 中名為 的數據區塊長度,以位元組為單位。

其中 LayoutTypeSTGTY_STREAM,cBytes 會指定要從 pwcsElementName 中名為 之數據流的 cOffset 讀取的位元組數目。

其中 LayoutType是STGTY_STORAGE,則會忽略此旗標。

其中 LayoutType是STGTY_REPEAT,正 cBytes 會指定重複區塊的開頭。 STGTY_REPEATcBytes 會標示重複區塊的結尾。

開頭區塊值 STG_TOEND 指定在每個數據流完全讀取之後,下列區塊中的專案都會重複。

備註

StorageLayout 結構的數位可能會如下所示。

StorageLayout arrScript[]=
    // Read first 2k of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,0},{0,2048}},
 
    //Test if "ObjectPool\88112233" storage exists
    {STGTY_STORAGE,L"ObjectPool\\88112233",{0,0},{0,0}},
 
    //Read 2k at offset 1048 of "WordDocument" stream
    {STGTY_STREAM,L"WordDocument",{0,10480},{0,2048}},
 
    //Interlace "Audio", "Video", and "Caption" streams
    {STGTY_REPEAT,NULL,0,STG_TOEND},
        {STGTY_STREAM,L"Audio", {0,0},{0,2048}},    // 2k of Audio
        {STGTY_STREAM,L"Video", {0,0},{0,65536}},   // 64k of Video
        {STGTY_STREAM,L"Caption", {0,0},{0,128}},   // 128b of text
    {STGTY_REPEAT,NULL, {0,0},{0,0}}
};
注意cOffsetcBytes 參數是LARGE_INTEGER結構,用來將 64 位帶正負號的整數值表示為兩個 32 位成員的聯集。 這兩個 32 位成員必須以 DWORD LowPart 和 LONG HighPart 做為結構成員的LARGE_INTEGER結構來表示。 (LowPart 指定低階 32 位,而 HighPart 指定高階 32 位。) 如果您的編譯程式具有 64 位整數的內建支援,請使用 LARGE_INTEGER 結構的 QuadPart 成員來儲存 64 位整數。
 

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
標頭 objidl.h

另請參閱

ILayoutStorage::LayoutScript