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 中名為 的數據區塊長度,以位元組為單位。
其中 LayoutType是STGTY_STREAM,cBytes 會指定要從 pwcsElementName 中名為 之數據流的 cOffset 讀取的位元組數目。
其中 LayoutType是STGTY_STORAGE,則會忽略此旗標。
其中 LayoutType是STGTY_REPEAT,正 cBytes 會指定重複區塊的開頭。 STGTY_REPEAT 零 cBytes 會標示重複區塊的結尾。
開頭區塊值 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}}
};
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
標頭 | objidl.h |