What is exactly VARIANT data structure?
See the question and my original answer on StackOverflowCOM Automation defines a set of types that it knows how to marshal through thread or process boundaries.
It means there is no need for custom proxy/stubs if you restrict your interfaces to use only those types, and you describe your interface with a type library (most development tools, such as Visual Studio, do that automatically).
Those types are described here: VARENUM Enumeration.
The VARIANT type is itself an automation type, it's a struct that can contain any one of the other automation types.
COM Automation appeared with the Visual Basic development environment (up to version 6, before VB.NET). VB/VBA defines the same types (including Variant
).