0

我正在努力寻找将来自 DLL 的大数据复制ref byte到文件的最佳方法。因为它是一个视频流(或数百个),所以我在循环中使用/
感觉不太舒服,等等。但更直接的东西。 我很坚持这一点,不幸的是,我真的没有太多事情要做。 无论如何,我正在考虑 P/Invoke ,但它得到的最接近的地方当然是(使用)。 现在,我将拥有数百个这种流,每个流可以达到 ~2Mbps。 所以归根结底-我正在寻找一种有效的复制方式Marhal.CopyWriteByte
ref byte
WriteFileIntPtrref bytebyte*fixed

ref byte块到文件(当然具有给定的数组大小)。

4

1 回答 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 回答