Можно ли преобразовать IntPtr в массив байтов, не выполняя Marshal.Copy?

Я хочу получить данные из указателя IntPtr в массив байтов. Для этого я могу использовать следующий код:

IntPtr intPtr = GetBuff();
byte[] b = new byte[length];
Marshal.Copy(intPtr, b, 0, length);

Но приведенный выше код принудительно выполняет операцию копирования из IntPtr в массив байтов. Это не очень хорошее решение, когда рассматриваемые данные велики.

Есть ли способ привести IntPtr к массиву байтов? Например, будет работать следующее:

byte[] b = (byte[])intPtr

Это устранит необходимость в операции копирования.

Также: как мы можем определить длину данных, на которые указывает IntPtr?

23
задан Sabuncu 23 June 2013 в 18:20
поделиться