Intenta entender el código correctamente previamente a utilizarlo a tu proyecto si tquieres aportar algo puedes compartirlo con nosotros.
Solución:
si es un byte[]
array:
byte[] managedArray = new byte[size];
Marshal.Copy(pnt, managedArray, 0, size);
si no es byte[]
el parámetro de tamaño en Marshal.Copy es el número de elementos en el array, no el tamaño en bytes. Entonces, si tuvieras un int[] array en lugar de un byte[] arraytendría que dividir por 4 (bytes por int) para obtener la cantidad correcta de elementos para copiar, suponiendo que su parámetro de tamaño pasado a través de la devolución de llamada se refiera a la cantidad de bytes.
¿Has buscado en Marshal.Copy?
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.copy.aspx
Si necesita rendimiento, úselo directamente:
unsafe
byte *ptr = (byte *)buffer.ToPointer();
int offset = 0;
for (int i=0; i
Nos puedes añadir valor a nuestro contenido informacional tributando tu experiencia en las críticas.