什么是VARIANT数据结构?

时间:2016-03-10 09:44:23

标签: visual-c++ com ole-automation

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

因为我不熟悉自动化和COM,所以对我有更多了解VARIANT会很有帮助吗?

2 个答案:

答案 0 :(得分:3)

COM Automation定义了一组知道如何通过线程或进程边界编组的类型。

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

这里描述了这些类型:VARENUM Enumeration

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

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

答案 1 :(得分: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