【问题标题】:COM event with binary data in arguments参数中有二进制数据的 COM 事件
【发布时间】:2009-06-17 16:57:24
【问题描述】:

我正在尝试使用 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# 客户端访问二进制数据?

【问题讨论】:

    标签: c# c++ com events


    【解决方案1】:

    您基本上有两个选择:使用 BYTE 的 SAFEARRAY 或将数据填充到 BSTR 中。后者虽然丑陋,但曾经是 默认 hack 将二进制数据传递给 VB6 组件。虽然我从未尝试过,但我想它也应该适用于 .Net。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多