1

我正确编组:

IntPtr buffer

缓冲区是指向具有各自数据的数组的 2 个指针的数组的指针。问题是我得到的数据不准确,例如检索到的数据中是否缺少某些内容(例如,来自音频数据流的 misimg 样本)。

// 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

4 回答 4

1

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

于 2009-02-10T22:12:36.877 回答
0

我对C#一无所知,所以这是一个完整的猜测,但是-您似乎是从整数复制到字节,“长度”是以整数为单位的计数,还是以字节为单位的计数?那里可能有混淆吗?有时这在常规的旧 C++ 中可能是一个问题。

于 2009-02-10T21:00:09.017 回答
0

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

更新:看起来更好!

于 2009-02-10T19:16:05.257 回答
0

如果缓冲区是指向数组的指针,则需要再次读取该指针。

有效:

buffer = Marshal.ReadIntPtr(buffer);
于 2009-02-10T19:46:24.700 回答