Winapi 将数组从本机代码发送到托管代码的最佳实践(C+;+;/CLI)?

Winapi 将数组从本机代码发送到托管代码的最佳实践(C+;+;/CLI)?,winapi,c++-cli,marshalling,unmanaged,managed-c++,Winapi,C++ Cli,Marshalling,Unmanaged,Managed C++,我正在为读/写USB HID设备编写win32 dll。exchange的数据是一个64字节无符号字符数组。客户端程序是用C++/CLI编写的 为了实现最大的速度和最小的开销,我需要一种有效的方法将阵列发送到托管客户端 我现在可以想到两个选择: 本机:使用PostMessage并发送数组指针。 托管:在WndProc中,封送。将指针复制到新的托管字节数组,然后删除指针 本机:使用函数指针作为回调来处理数据。 托管:使用Marshal.GetFunctionPointerForDelegate将函

我正在为读/写USB HID设备编写win32 dll。exchange的数据是一个64字节无符号字符数组。客户端程序是用C++/CLI编写的

为了实现最大的速度和最小的开销,我需要一种有效的方法将阵列发送到托管客户端

我现在可以想到两个选择:

  • 本机:使用PostMessage并发送数组指针。
    托管:在WndProc中,封送。将指针复制到新的托管字节数组,然后删除指针

  • 本机:使用函数指针作为回调来处理数据。
    托管:使用Marshal.GetFunctionPointerForDelegate将函数指针传递到本机世界


  • 谢谢。

    我想说,选择奇怪的编组方式是过早的优化。使用最简单的方法封送数据,并尝试评估其他方法,如果这不能令人满意地执行。除非体系结构需要回调或消息发布,为什么不将数组传递给函数?

    C++/CLI可以读取非托管数组,无需封送处理。