我正在使用这段代码将非托管代码中的IntPtr缓冲区保存到文件中,以节省字节。 这是一个简单的回调函数:
private void callback(IntPtr buffer, int length)
{
byte[] bytes = new byte[length];
Marshal.Copy(buffer, bytes, 0, length);
FileStream file = new FileStream(filename, FileMode.Create, FileAccess.Write);
file.Write(bytes, 0, length);
file.Close();
}
我想要的是将这些数据存储到文件中并丢弃它。据我所了解,非托管代码中有一个缓冲区,在我的代码中还有第二个缓冲区。我不想在这些缓冲区之间复制数据,而是直接使用它:
// bad: (unmanaged) buffer -> (managed) bytes -> file
// awesome: (unmanaged) buffer -> file
我的任务需要最快的方式将数据存储到文件中。