Utilizzo esplicito di PInvoke in C++ (attributo DllImport)
.NET Framework fornisce funzionalità esplicite di Platform Invoke (o PInvoke) con l'attributo Dllimport
per consentire alle applicazioni gestite di chiamare funzioni non gestite in pacchetto all'interno di DLL. PInvoke esplicito è necessario per situazioni in cui le API non gestite vengono in pacchetto come DLL e il codice sorgente non è disponibile. Per chiamare le funzioni Win32, ad esempio, è necessario PInvoke. In caso contrario, usare P{Invoke implicito. Per altre informazioni, vedere Uso dell'interoperabilità C++ (PInvoke implicito).
PInvoke funziona usando DllImportAttribute. Questo attributo, che accetta il nome della DLL come primo argomento, viene inserito prima di una dichiarazione di funzione per ogni punto di ingresso DLL che verrà usato. La firma della funzione deve corrispondere al nome di una funzione esportata dalla DLL, ma alcune conversioni dei tipi possono essere eseguite in modo implicito definendo le DllImport
dichiarazioni in termini di tipi gestiti.
Il risultato è un punto di ingresso gestito per ogni funzione DLL nativa che contiene il codice di transizione necessario (o le conversioni di dati semplici). Le funzioni gestite possono quindi chiamare nella DLL tramite questi punti di ingresso. Il codice inserito in un modulo come risultato di PInvoke è completamente gestito.
In questa sezione
Procedura: Chiamare DLL native da codice gestito tramite PInvoke
Procedura: Effettuare il marshalling di stringhe tramite PInvoke
Procedura: Effettuare il marshalling di strutture tramite PInvoke
Procedura: Effettuare il marshalling di matrici tramite PInvoke
Procedura: Effettuare il marshalling di puntatori a funzione tramite PInvoke
Procedura: Effettuare il marshalling di puntatori incorporati tramite PInvoke