VisualC++DLL将2-3兆字节复制到C#缓冲区的最快方法是什么
what is fastest way for Visual-C++ DLL to copy 2-3Mega-Bytes to a C# buffer?
什么样的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。
这里有一个想法:
- 让C#代码分配缓冲区
- 将其固定到固定地址
- 将指针传递到C++代码
- C++代码现在可以直接写入缓冲区(甚至可以使用零复制方法)
优点是您可以使用一个正常的、托管的byte[]
。
相关文章:
- 将随机数放入缓冲区以写入文件的有效方法是什么?
- 从C 中的函数中动态分配的缓冲区返回的最佳模式是什么?
- 带缓冲区的 iostream 的机制是什么?
- 从二进制缓冲区初始化变量的正确方法是什么
- 从 char* 缓冲区读取int32_t的惯用 cpp14 方法是什么?
- 在环形缓冲区中向后循环的好方法是什么
- OpenGL中的缓冲区究竟是什么?如何使用多个缓冲区来发挥优势
- 是什么让glBufferSubData在大缓冲区上变慢
- ZeroMQ 的替代方案是什么,用于移动协议缓冲区有效负载
- 在 c++ 中使用消息结构读取/填充数据缓冲区的正确方法是什么?
- 在C++中,在窗口中播放示例缓冲区最常见的方式是什么
- 缓冲区已满时清除字符串缓冲区.这是什么图案
- 在C++中使用 fread 时实现固定大小缓冲区的最佳方法是什么?
- 缓冲区的目的是什么 = " "
- C++-缓冲区和流的需求是什么
- VisualC++DLL将2-3兆字节复制到C#缓冲区的最快方法是什么
- 为文本编辑控件实现缓冲区的最佳方法是什么?
- 在C++中分配可变大小缓冲区的"proper"方法是什么?
- 使用矢量实现串行缓冲区的最佳方法是什么<char>?
- 冲洗缓冲区是什么意思