我正在学习Microsoft OLE Automation和COM,它使用VARIANT来传递数据。我读过它是联合数据结构,但没有找到足够的信息。
因为我是自动化和 COM 的新手,这对我了解更多有关 VARIANT 的信息会有帮助吗?
COM 自动化定义了一组类型,它知道如何通过线程或进程边界封送这些类型。
这意味着如果您限制接口仅使用这些类型,并且使用类型库描述您的接口(大多数开发工具,例如 Visual Studio,会自动执行此操作),则不需要自定义代理/存根。
这些类型的描述如下:VARENUM 枚举。
VARIANT 类型本身就是一种自动化类型,它是一个可以包含任何其他自动化类型的结构。
COM Automation 随 Visual Basic 开发环境一起出现(最高版本 6,早于 VB.NET)。 VB/VBA 定义相同的类型(包括
Variant
)。
一个 VARIANT 的长度是 16 个字节。前两个字节定义变体保存的数据类型:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221170(v=vs.85).aspx
VARIANT 的后半部分保存变量的内容。欲了解更多信息:
https://msdn.microsoft.com/en-gb/library/windows/desktop/ms221627(v=vs.85).aspx