Ho un metodo che voglio importare da una DLL e ha una firma:DllImport e char *
BOOL GetDriveLetter(OUT char* DriveLetter)
Ho provato
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(byte[] DriveLetter);
e
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(StringBuilder DriveLetter);
ma nessuno dei due ha restituito nulla nella variabile DriveLetter.
Che cosa significa UnmanagedType.I1? – Malfist
@Malfist, Il valore I1 indica al CLR di eseguire il marshalling del valore come un intero di 1 byte. In realtà in questo esempio non era corretto poiché I4 è il valore corretto (aggiornato un po 'fa). Per quanto riguarda il motivo per cui controllare questo post di blog che ho scritto su marshalling valori bool: http://blogs.msdn.com/jaredpar/archive/2008/10/14/pinvoke-and-bool-or-should-i-say-bool .aspx – JaredPar
Quando eseguo I4, ottengo MarshalDirectiveException – Malfist