Pregunta

Si tengo un puntero no administrado y quiero transferir un número especificado de bytes de ese lugar a una matriz de bytes, lo que es la mejor manera de hacer esto?

es decir. lo que es el equivalente de Marshal.PtrToString * métodos, pero en el que el destino es un byte ()

Gracias

¿Fue útil?

Solución

Marshal.Copy tiene sobrecargas para las matrices de bytes copiado a / desde un puntero.

Por Byte() es la interoperación con este estilo COM VB6? Por qué desea comprobar el tipo COM subyacente mediante el Visor OLE-COM (incluido en las herramientas del SDK de Windows instalados con VS) para abrir la VB DLL creado para mirar que su biblioteca de tipos dice.

Otros consejos

Trate el siguiente código

public static byte[] PtrToByteArray(IntPtr ptr, int len) {
  var array = new byte[len];
  for ( int i = 0; i < len; i++ ) { 
    array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
    ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top