Я знаю, что это старый вопрос, но Google привел меня сюда, чтобы он мог привлечь кого-то еще.
Если вы используете P / Invoke для вызова:
... GetBuffer(byte* bd)
это должно выглядеть примерно так:
[DllImport("MyDll.dll")]
... GetBuffer(ref byte bd);
И буферный массив в c # должен передаваться следующим образом:
var arr = new byte[Length];
GetBuffer(ref arr[0]);
Это также работает с char*
, так как вы можете просто передать ту же самую ссылку на массив byte
и затем использовать string s = Encoding.<encoding>.GetString(arr);