从const int * const buffer []中检索数据

时间:2009-02-10 19:13:01

标签: c# pointers pinvoke

我正确地编组了:

IntPtr buffer

Buffer指向指向具有相应数据的数组的2个指针的数组。 问题是我得不到准确的数据,比如检索到的数据中缺少某些东西(例如,从音频数据流中错过样本)。

// length is parameter
IntPtr[] temp = new IntPtr[2];
Marshal.Copy(buffer, temp, 0, 2);
bufferedData = new byte[bufferSize];
byte[] a = new byte[length];
byte[] b = new byte[length];
Marshal.Copy(temp[0], a, 0, length);
Marshal.Copy(temp[1], b, 0, length);

编辑:抱歉,我忘记写下这两行:)

4 个答案:

答案 0 :(得分:1)

我终于解决了它。我没有错误地读取完整的输入缓冲区。谢谢你的帮助!

答案 1 :(得分:0)

是的,您还需要复制字节缓冲区:)

更新:看起来更好!

答案 2 :(得分:0)

如果buffer是指向数组的指针,则需要再次读取指针。

有效:

buffer = Marshal.ReadIntPtr(buffer);

答案 3 :(得分:0)

我对C#一无所知,所以这是一个完整的猜测,但是 - 你好像是从int复制到字节,是int的计数长度,还是以字节为单位的计数?那里会有混音吗?这有时会成为常规旧C ++中的一个问题。