gpt4 book ai didi

C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

转载 作者:太空狗 更新时间:2023-10-29 18:20:24 29 4
gpt4 key购买 nike

我正在使用此代码将非托管代码中 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

对于我的任务,我需要以最快的方式将数据存储到文件中。

最佳答案

留在 .NET 框架内可能比调用内核 dll 更好。

我会使用:

private void callback(IntPtr buffer, int length, String filename)
{
try
{
FileStream file = new FileStream(filename, FileMode.Create, FileAccess.Write);
UnmanagedMemoryStream ustream = new UnmanagedMemoryStream((byte*)buffer, length);
ustream.CopyTo(file);
ustream.Close();
file.Close();
}
catch{/** To do: catch code **/}
}

关于C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682226/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com