PInvoke char * en C DLL manejado como cadena en C #. Problema con caracteres nulos

La función en C DLL se ve así:

int my_Funct(char* input, char* output);

Debo llamar esto desde la aplicación C #. Lo hago de la siguiente manera:

...DllImport stuff...
public static extern int my_Funct(string input, string output);

La cadena de entrada se transmite perfectamente a la DLL (tengo una prueba visible de eso). La salida que cumple la función aunque sea incorrecta. Tengo datos hexa en ella, como:

3F-D9-00-01

Pero, desafortunadamente, todo lo que está después de los dos ceros se corta, y solo los dos primeros bytes vienen a mi aplicación C #. Sucede, porque (supongo) trata como un carácter nulo y lo toma como el final de la cadena.

¿Alguna idea de cómo podría deshacerme de él? Intenté especificarlo como un IntPtr en lugar de una cadena, pero no sé qué hacer con él después. Traté de hacer después de

 byte[] b1 = new byte[2];
 Marshal.Copy(output,b1,0,2);

2 debería ser normalmente la longitud de la matriz de bytes. Pero recibo todo tipo de errores: como "El rango solicitado se extiende más allá del final de la matriz". o "Intentó leer o escribir memoria protegida ..."

Aprecio cualquier ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta