1

我正在学习 Microsoft OLE 自动化和 COM,它使用 VARIANT 来传递数据。我读过它是联合数据结构,但没有找到足够的信息。

由于我是自动化和 COM 的新手,这对我了解更多关于 VARIANT 会有帮助吗?

4

2 回答 2

4

COM 自动化定义了一组类型,它知道如何通过线程或进程边界进行编组。

这意味着如果您将接口限制为仅使用这些类型,并且您使用类型库描述您的接口(大多数开发工具,例如 Visual Studio,会自动执行此操作),则不需要自定义代理/存根。

这些类型在此处描述:VARENUM Enumeration

VARIANT类型本身就是一种自动化类型,它是一个可以包含任何其他自动化类型的结构。

COM 自动化出现在 Visual Basic 开发环境中(直到版本 6,VB.NET 之前的版本)。VB/VBA 定义了相同的类型(包括Variant)。

于 2016-03-10T10:31:41.563 回答
2

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

于 2016-03-10T10:26:39.497 回答