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 成员中名为 的 steam 的起始偏移量。
如果 layoutTypeSTGTY_STORAGE,则此标志应设置为零。
如果 LayoutTypeSTGTY_REPEAT,则此标志应设置为零。
cBytes
pwcsElementName 中名为 的数据块的长度(以字节为单位)。
其中 LayoutTypeSTGTY_STREAM,cBytes 指定要从 pwcsElementName 中名为 的流在 cOffset 处读取的字节数。
如果 layoutTypeSTGTY_STORAGE,则忽略此标志。
其中 LayoutTypeSTGTY_REPEAT,正 cBytes 指定重复块的开头。 具有零 cBytes 的STGTY_REPEAT标记重复块的末尾。
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 |