Ejemplo C API de firma:¿Cómo puedo pasar un puntero a una matriz usando p/invoke en C#?
void Func(unsigned char* bytes);
En C, cuando quiero pasar un puntero a una matriz, que puedo hacer:
unsigned char* bytes = new unsigned char[1000];
Func(bytes); // call
¿Cómo traduzco la API de arriba para P/¿Invocar de manera que pueda pasar un puntero a la matriz de bytes C#?
por qué funcionaría el primer enfoque, y el segundo no funcionaría. Esto es lo que estoy enfrentando en una aplicación de Windows Phone. – moubarak
Sé que esta publicación es un poco antigua, pero 'Marshal.SizeOf (object)' no funciona con matrices. Estoy bastante seguro de que obtendrás una excepción si pasas una matriz pero no tengo VS abierto en frente de mí ahora mismo para intentarlo. Para determinar correctamente el tamaño de una matriz, para su ejemplo, el código sería 'Marshal.SizeOf (typeof (byte)) * ar.Length'. – 9ee1
Sí, tienes razón 9ee1. Marshal.SizeOf se puede usar para una estructura pero no para una matriz. He actualizado el código de ejemplo en consecuencia. Gracias. – asponge