Получить данные из буфера const int * const [] - PullRequest
1 голос
/ 10 февраля 2009

Я правильно указал:

IntPtr 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);

edit: извините, я забыл написать эти 2 строки:)

Ответы [ 4 ]

1 голос
/ 11 февраля 2009

Я наконец решил это. Я не читал полный входной буфер по ошибке. Спасибо за вашу помощь!

0 голосов
/ 10 февраля 2009

Если буфер является указателем на массив, вам необходимо прочитать указатель еще раз.

Эффективно:

buffer = Marshal.ReadIntPtr(buffer);
0 голосов
/ 11 февраля 2009

Я ничего не знаю о C #, так что это полное предположение, но - вы, похоже, копируете из ints в байты, это "length" количество в ints или количество в байтах? Может ли быть там путаница? Иногда это может быть проблемой в обычном старом C ++.

0 голосов
/ 10 февраля 2009

Да, вам нужно будет скопировать байт буфера тоже:)

Обновление: Это выглядит лучше

!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...