このコードを使用して、アンマネージ コードの 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();
}
私が欲しいのは、このデータをファイルに保存して捨てることです。私が理解していることから、アンマネージ コードにはバッファーがあり、MY コードには 2 つ目のバッファーがあります。データをコピーしたくないので、直接コピーしたい:
// bad: (unmanaged) buffer -> (managed) bytes -> file
// awesome: (unmanaged) buffer -> file
私の仕事では、データをファイルに保存する最も速い方法が必要です。