【发布时间】:2013-07-31 08:16:37
【问题描述】:
我有一个 ATL COM 服务,它公开了一个将 [in, out] VARIANT 指针作为参数的方法。
例如,我有以下COM接口的方法,比如IMyApiCom:
HRESULT Action([in, out] VARIANT* EmptyObj);
我编写了一个调用它的 C# 客户端应用程序,如下所示:
MyApiCom myapi = new MyApiCom();
Object emptyObj = new Object();
myapi.Action(ref emptyObj);
现在,当我调试 COM 服务并检查 EmptyObj 的初始化方式时,它的类型是 VT_DISPATCH,而我预计它是 VT_EMPTY。这给我带来了一个问题,尽管它可以很容易地解决(通过将其设置为 VT_EMPTY)。
除了为什么我更喜欢它是 VT_EMPTY 的原因,我只想知道为什么它被初始化为 VT_DISPATCH 而不是 VT_EMPTY。
另外,是否可以传递 VT_EMPTY 类型的对象?
【问题讨论】:
标签: com marshalling variant