参数中包含二进制数据的COM事件

时间:2009-06-17 16:57:24

标签: c# c++ com events

我正在尝试使用C ++和ATL开发一个COM对象,供C ++和C#Windows Mobile客户端使用。 COM对象包含所有连接到我们服务器的逻辑,并使用我们的专有协议发送/接收数据。我在使用C#和C ++正确运行的OnReceive事件时遇到了一些困难。

我已经定义了这样的事件函数:

HRESULT OnReceive(BYTE * pBuffer,LONG lSize);

但是当我在C#或对象浏览器中查看该函数时,它出现为:

OnReceive(ref byte pBuffer,int lSize);

我如何将“ref byte”视为C#中的指针?如何将二进制数据传递给OnReceive并允许C ++和C#客户端访问二进制数据?

1 个答案:

答案 0 :(得分:0)

您基本上有两种选择:使用BYF的SAFEARRAY或将数据填入BSTR。后者虽然很丑陋,但曾经是默认hack 将二进制数据传递给VB6组件。虽然我从来没有尝试过,但我想它也适用于.Net。