Använda explicit PInvoke i C++ (DllImport-attribut)

.NET Framework tillhandahåller explicita funktioner för plattformsanrop (eller PInvoke) med Dllimport attributet så att hanterade program kan anropa ohanterade funktioner som paketeras i DLL:er. Explicit PInvoke krävs för situationer där ohanterade API:er paketeras som DLL:er och källkoden inte är tillgänglig. Att anropa Win32-funktioner kräver till exempel PInvoke. Annars använder du implicit P{Invoke; se Använda C++ Interop (Implicit PInvoke) för mer information.

PInvoke fungerar med hjälp av DllImportAttribute. Det här attributet, som tar DLL-namnet som sitt första argument, placeras före en funktionsdeklaration för varje DLL-startpunkt som ska användas. Funktionens signatur måste matcha namnet på en funktion som exporteras av DLL:en (men någon typkonvertering kan utföras implicit genom att DllImport definiera deklarationerna i termer av hanterade typer.)

Resultatet är en hanterad startpunkt för varje intern DLL-funktion som innehåller nödvändig övergångskod (eller thunk) och enkla datakonverteringar. Hanterade funktioner kan sedan anropa dll-filen via dessa startpunkter. Koden som infogas i en modul till följd av PInvoke hanteras helt.

I det här avsnittet

Se även

Anropa interna funktioner från hanterad kod