我在COM接口定义中传递一组结构时遇到了一些问题。例如,我试图在一个读取函数中定义一系列变量Ids并且我期望回复函数(相同的函数)将带回一个与之前定义的变量Ids对应的值数组:
[helpstring(“method ReadVariables”)] HRESULT ReadVariables([in] VARIANT varIds,[out] _valStruct * retVals);
对于_valStruct,定义为:
struct _valStruct
{
int varId;
double varVal;
int timeStamp;
double funcId;
....
}
我不熟悉COM,我只知道一些基本类型,比如int,double等等......我真诚地在这里的一些专家会给我一些详细的示例代码或相关信息。非常感谢您的帮助......谢谢!
答案 0 :(得分:0)
男人,自从我做了类似的事情以来已经很久了!
无论如何,根据我从2002年开始编写的代码,我使用了SAFEARRAY
..但也许仅用于VB互操作性,如下所示:
[id(9), helpstring("method Keys")] HRESULT Keys([out, retval] SAFEARRAY(ComInt128)* pKeys);
然后,您可以使用SafeArrayAllocDescriptor
和SafeArrayAllocData
等API函数创建数组,并使用SafeArrayAccessData
/ SafeArrayUnAccessData
来管理内容。
希望这有帮助。