类型指示器
实际属性遵循属性标识符/偏移量对属性集值的表。 每个属性都存储为 DWORD,后跟数据类型值。
PROPVARIANT 结构中介绍了类型指示器及其关联值。
所有类型/值对都必须从 32 位边界开始。 因此,值后跟空字节,以在 32 位边界上对齐后续对。
在给定字节计数的情况下,以下示例代码计算在 32 位边界上对齐所需的字节数。
cbAdd = (((cbCurrent + 3) >> 2) << 2) - cbCurrent ;
在值的向量内,小于 32 位的简单标量值的每次重复都必须与其自然对齐方式(而不是 32 位对齐)对齐。 实际上,这仅对于 VT_UI1、 VT_UI2、 VT_I2和 具有 1 字节或 2 字节自然对齐) VT_BOOL (而言重要。 所有其他类型都具有四字节的自然对齐方式。 某些类型(例如 ,VT_R8)实际上具有 8 字节的自然对齐方式,但存储方式就像具有 4 字节对齐一样。
类型指示 符VT_I2 | VT_VECTOR 的属性值包括:
- DWORD 元素计数。
- 一个打包的两字节整数序列,它们之间没有空填充。
重要
作为向量属性元素的一部分存储的任何 32 位计数或属性类型也必须是 32 位对齐的。
标识符VT_LPSTR | VT_VECTOR类型的属性值包括:
- DWORD 元素计数 (DWORDcElems) 。
- ) (charrgch[] 的字符串序列,每个字符串前面都有一个长度计数 DWORD ,可能后跟 null 填充,以舍入到 32 位边界。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈