如何在COM接口定义中将结构数组作为[in,out]参数传递

如何在COM接口定义中将结构数组作为[in,out]参数传递,com,Com,我在传递COM接口定义中的结构数组时遇到了一些问题。例如,我试图在一个read函数中定义一系列变量id,我希望reply函数(同一个函数)将返回一个与先前定义的变量id对应的值数组: [helpstring(“方法ReadVariables”)]HRESULT ReadVariables([in] 变量[输出]\u valStruct*retVals) 对于_valStruct,定义为: struct _valStruct { int varId; double varVal;

我在传递COM接口定义中的结构数组时遇到了一些问题。例如,我试图在一个read函数中定义一系列变量id,我希望reply函数(同一个函数)将返回一个与先前定义的变量id对应的值数组:

[helpstring(“方法ReadVariables”)]HRESULT ReadVariables([in] 变量[输出]\u valStruct*retVals)

对于_valStruct,定义为:

struct _valStruct
{
   int varId;
   double varVal;
   int timeStamp;
   double funcId;
....

}

我不熟悉COM,我只知道一些基本类型,如int、double等。。。我真诚的希望这里的一些专家能给我一些详细的示例代码或相关信息。非常感谢你的帮助。。。谢谢

老兄,我很久没有做过那样的事了! 无论如何,根据我从2002年挖掘的代码,我使用了
SAFEARRAY
。。但可能仅适用于VB互操作性,如:

[id(9), helpstring("method Keys")] HRESULT Keys([out, retval] SAFEARRAY(ComInt128)* pKeys);
然后,您可以使用API函数,如
SafeArrayAllocDescriptor
SafeArrayAllocData
来创建数组,并使用
SafeArrayAccessData
/
SafeArrayUnAccessData
来管理内容


希望这能有所帮助。

嗨,杰斯特,很高兴你这么快就回复了我。你能再详细说明一下你的示例代码吗?关于我的问题,我试图通过COM接口传递一个结构数组。坦白说,我还是不知道该怎么做。。。