Verwenden von explizitem PInvoke in C++ (DllImport-Attribut)

Aktualisiert: November 2007

.NET Framework verfügt über explizite PInvoke-Features (Platform Invoke) mit dem Dllimport-Attribut, um das Aufrufen von in DLLs verpackten, nicht verwalteten Funktionen durch verwaltete Funktionen zu ermöglichen. Explizites PInvoke ist in Situationen erforderlich, in denen nicht verwaltete APIs als DLLs verpackt sind und der Quellcode nicht verfügbar ist. Beispielsweise ist PInvoke beim Aufrufen von Win32-Funktionen erforderlich. Verwenden Sie andernfalls implizites P\{Invoke. Weitere Informationen finden Sie unter Verwenden von C++-Interop (implizites PInvoke).

PInvoke funktioniert auf Grundlage des DllImportAttribute. Dieses Attribut, das den Namen der DLL als erstes Argument behandelt, wird vor die Funktionsdeklaration jedes verwendeten DLL-Einstiegspunkts gesetzt. Die Signatur der Funktion muss dem Namen einer von der DLL exportierten Funktion entsprechen (ein gewisses Maß an Typkonvertierung kann jedoch implizit durch das Definieren der DllImport-Deklarationen als verwaltete Typen erfolgen).

So ergibt sich ein verwalteter Einstiegspunkt für jede systemeigene DLL-Funktion, die den erforderlichen Übergangscode (oder Thunk) und einfache Datenkonvertierungen enthält. Aus verwalteten Funktionen kann dann über diese Einstiegspunkte ein Aufruf in die DLL erfolgen. Der als Resultat von PInvoke in ein Modul eingefügte Code ist sämtlich verwalteter Code. Explizites PInvoke wird für /clr-, /clr:pure- und /clr:safe-Kompilierungen unterstützt. Weitere Informationen finden Sie unter Reiner und überprüfbarer Code.

In diesem Abschnitt

Siehe auch

Konzepte

Aufrufen systemeigener Funktionen aus verwaltetem Code