Share via


Utilizzo esplicito di PInvoke in C++ (attributo DllImport)

In .NET Framework sono disponibili funzionalità esplicite di platform invoke (PInvoke) con l'attributo Dllimport per consentire alle applicazioni gestite di chiamare funzioni non gestite assemblate nelle DLL. L'utilizzo esplicito di PInvoke è indispensabile nelle situazioni in cui le API non gestite sono assemblate come DLL e il codice sorgente non è disponibile, ad esempio per la chiamata delle funzioni Win32. Negli altri casi, è possibile utilizzare P{Invoke in modalità implicita. Per ulteriori informazioni, vedere Utilizzo delle funzionalità di interoperabilità C++ (PInvoke implicito).

Il funzionamento di PInvoke si basa sull'utilizzo di DllImportAttribute. Questo attributo, che accetta il nome della DLL come primo argomento, deve essere posizionato prima di una dichiarazione di funzione per ciascun punto di ingresso DLL che verrà utilizzato. La firma della funzione deve corrispondere al nome di una funzione esportata dalla DLL, anche se una qualche forma di conversione di tipo può essere comunque eseguita implicitamente definendo le dichiarazioni DllImport in termini di tipi gestiti.

Il risultato è un punto di ingresso gestito per ciascuna funzione DLL nativa che contiene il codice di transizione necessario (thunk) e semplici conversioni di dati. Le funzioni gestite possono quindi effettuare una chiamata nella DLL utilizzando questi punti di ingresso. Il codice inserito in un modulo a seguito di una chiamata PInvoke viene gestito interamente e l'utilizzo esplicito di PInvoke è supportato per le compilazioni /clr, /clr:pure e /clr:safe. Per ulteriori informazioni, vedere Codice pure e verificabile (C++/CLI).

In questa sezione

Vedere anche

Concetti

Chiamata a funzioni native da codice gestito