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 指定重复块的开头。 具有零 cBytesSTGTY_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}}
};
注意 参数 cOffsetcBytes是LARGE_INTEGER 结构,用于将 64 位带符号整数值表示为两个 32 位成员的并集。 两个 32 位成员必须表示为 LARGE_INTEGER 结构, DWORD LowPart 和 LONG HighPart 作为结构成员。 (LowPart 指定低序 32 位,HighPart 指定高阶 32 位。) 如果编译器具有对 64 位整数的内置支持,请使用 LARGE_INTEGER 结构的 QuadPart 成员来存储 64 位整数。
 

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
标头 objidl.h

另请参阅

ILayoutStorage::LayoutScript