COM应该用什么数据类型传递char*内存块?

Garfield 2012-08-03 09:08:36
我做了个进程外的EXE COM Server,
客户端需要调用它的接口发送数据块,数据块原是char *类型的字节数组

我应该用SAFEARRAY呢还是其他IDataObject还是什么来传递这个内存块呢?

用BSTR不知道可不可以,但是即使可以,也感觉不太合适。
...全文
124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garfield 2012-08-03
  • 打赏
  • 举报
回复
只是,效率问题看起来很堪忧
Garfield 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

带\0那就不是标准的字符串 用数组

BYTE 和 COleVariant 相互转换 .
[/Quote]

明白了,还是用SAFEARRAY
zgl7903 2012-08-03
  • 打赏
  • 举报
回复
带\0那就不是标准的字符串 用数组

BYTE 和 COleVariant 相互转换 .
Garfield 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

char*就可以啊,传指针。
[/Quote]

我试过用BYTE *,但是只能传递1个字节,即使IDL这样声明:

SendMsg([in, sizeis(MsgLen)] BYTE *Msg, [in] LONG MsgLen)
Garfield 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

_bstr_t _variant_t COleVariant CComVariant 应该都可以
基本实现上都是 SysAllocString SysFreeString
[/Quote]

不能啊,char*内存块不是字符串,中间有可能会包含\0的,没法用SysAllocString来拷
zgl7903 2012-08-03
  • 打赏
  • 举报
回复
_bstr_t _variant_t COleVariant CComVariant 应该都可以
基本实现上都是 SysAllocString SysFreeString
牛 魔 王 2012-08-03
  • 打赏
  • 举报
回复
char*就可以啊,传指针。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧