c – 使用COM传递数组?

c – 使用COM传递数组?,第1张

概述我是一个用ATL编写的COM对象,它是从C应用程序中使用的,我想在两者之间传递一组BYTE.到目前为止,我对COM / IDL的体验仅限于传递简单类型(BSTR,LONG等). 是否有一种相对简单的方法让COM对象将数组传递给调用者?例如,我想传递原始图像(TIFF)而不是弄乱临时文件. 尝试将safearray变量传递给COM对象.像这样将BYTE数组放入safearray变体中…… bool 我是一个用ATL编写的COM对象,它是从C应用程序中使用的,我想在两者之间传递一组BYTE.到目前为止,我对COM / IDL的体验仅限于传递简单类型(BSTR,LONG等).

是否有一种相对简单的方法让COM对象将数组传递给调用者?例如,我想传递原始图像(TIFF)而不是弄乱临时文件.

解决方法 尝试将safearray变量传递给COM对象.像这样将BYTE数组放入safearray变体中……
bool ArrayToVariant(CArray<BYTE,BYTE>& array,VARIANT& vtResult){SAFEARRAY FAR*  psarray;SAFEARRAYBOUND sabounds[1]; sabounds[0].lLbound=0;sabounds[0].cElements = (ulONG)array.GetSize();long nLbound;psarray = SafeArrayCreate(VT_UI1,1,sabounds);if(psarray == NulL)    return false;for(nLbound = 0; nLbound < (long)sabounds[0].cElements ; nLbound++){    if(Failed(SafeArrayPutElement(psarray,&nLbound,&array[nLbound]))){        SafeArrayDestroy(psarray);        return false;    }}VariantFree(vtResult);vtResult.vt = VT_ARRAY|VT_UI1;vtResult.parray = psarray;return true;}@H_404_9@                  总结       

以上是内存溢出为你收集整理的c – 使用COM传递数组?全部内容,希望文章能够帮你解决c – 使用COM传递数组?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1255602.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存