将32位指针传递给64位COM控件

问题描述:

我们有一个与64位COM控件接口的32位应用程序。为了处理接口,我创建了一个驻留在本地服务器(exe)中的64位COM对象。这个本地服务器对象实现与我们的COM控件相同的接口,并简单地传递这些调用。除了以VARIANT *作为参数的那些接口函数外,一切正在工作。我猜测问题是指针大小的差异。我能做些什么来解决这个问题?将32位指针传递给64位COM控件

Variant *包含BSTR。下面是从IDL表示函数调用的代码片段:

[id(5), helpstring("method GetSystemInfo")] HRESULT GetSystemInfo([in] LONG InfoID, [in] LONG Channel, [in,out] VARIANT* InfoVal); 

感谢

我想通了。在使用VARIANT时,我需要在调用之前设置v.bstrVal = NULL。