アンマネージメモリをマネージバイト配列に読み込む必要があります。
このために、アンマネージメモリへのIntPtr参照と、関心のあるアンマネージメモリのサイズを表す長さがあります。
次のコードを使用して、それをマネージドバイト配列に読み込みます。
byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}
ただし、これによりパフォーマンスが非常に低下します。256KBのアンマネージメモリを使用してこのメソッドを1000回呼び出すと、7秒以上かかります。これを行うにはもっと効率的な方法があるはずだと思います。
事前に読み取る必要のあるメモリのサイズがわからないため、Marshal.PtrToStructureを使用できませんでした。
この機能のパフォーマンスをどのように改善できるかについてのアイデアはありますか?