VisualC++DLL将2-3兆字节复制到C#缓冲区的最快方法是什么

本文关键字:缓冲区 是什么 方法 字节 复制 VisualC++DLL | 更新日期: 2023-09-27 18:22:02

什么样的C#缓冲区可以处理这个问题?

我需要我的C#solution.exe从VisualC++DLL中获取大约2-3MB的数据,每秒最多60次,该DLL生成实时视频帧(每秒最多60帧)并将其复制到C#缓冲区。然后C#将通过USB将这些数据转发到另一台计算机。

我试过C#字符串,但有一个最大大小限制(大约10KB)。

我想到的是一个包含数据缓冲区和握手变量的C#结构。

可能,我需要多个缓冲区,所以可能需要这些结构的数组。

但是,本质上,给某种C#缓冲区的DLL目标地址最好的方法是什么(最快!!),这样DLL就可以将其生成的2-3MB数据复制到缓冲区,然后设置一个变量标志,同时C#正在轮询这个标志,以了解数据何时在缓冲区中,以便对其进行进一步处理。

缓冲区应该首先由C#创建,而不是DLL。

VisualC++DLL将2-3兆字节复制到C#缓冲区的最快方法是什么

这里有一个想法:

  1. 让C#代码分配缓冲区
  2. 将其固定到固定地址
  3. 将指针传递到C++代码
  4. C++代码现在可以直接写入缓冲区(甚至可以使用零复制方法)

优点是您可以使用一个正常的、托管的byte[]