我正在努力寻找将来自 DLL 的大数据复制ref byte
到文件的最佳方法。因为它是一个视频流(或数百个),所以我在循环中使用/
感觉不太舒服,等等。但更直接的东西。
我很坚持这一点,不幸的是,我真的没有太多事情要做。
无论如何,我正在考虑 P/Invoke ,但它得到的最接近的地方当然是(使用)。
现在,我将拥有数百个这种流,每个流可以达到 ~2Mbps。
所以归根结底-我正在寻找一种有效的复制方式Marhal.Copy
WriteByte
ref byte
WriteFile
IntPtr
ref byte
byte*
fixed
ref byte
块到文件(当然具有给定的数组大小)。
问问题
142 次
1 回答
0
万一有人感兴趣,感谢史密斯先生,我首先将给定的 DllImport 从ref byte
声明更改为IntPtr
.
然后我导入了WriteFile
:
[DllImport("kernel32.dll")]
private static extern bool WriteFile(IntPtr hFile, IntPtr lpBuffer, int NumberOfBytesToWrite, out int lpNumberOfBytesWritten, IntPtr lpOverlapped);
并按如下方式使用它:
//somewhere in class:
tmpFileStream = new FileStream("tmp.bin", FileMode.Create, FileAccess.Write);
public void AddBuffer(IntPtr buffer, int size)
{
int written;
WriteFile(tmpFileStream.SafeFileHandle.DangerousGetHandle(), buffer, size, out written, IntPtr.Zero);
}
于 2013-10-07T18:54:22.060 回答