Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Plattformaufruf ist ein Dienst, der verwalteten Code ermöglicht, nicht verwaltete Funktionen aufzurufen, die in Dynamic Link Libraries (DLLs) implementiert sind, z. B. solche in der Windows-API. Sie sucht und ruft eine exportierte Funktion auf und marshallt ihre Argumente (ganze Zahlen, Zeichenfolgen, Arrays, Strukturen usw.) bei Bedarf über die Interoperationsgrenze.
In diesem Abschnitt werden Aufgaben vorgestellt, die mit der Verwendung nicht verwalteter DLL-Funktionen verbunden sind, und enthält weitere Informationen zum Plattformaufruf. Zusätzlich zu den folgenden Aufgaben gibt es allgemeine Überlegungen und einen Link, der zusätzliche Informationen und Beispiele bereitstellt.
Um exportierte DLL-Funktionen zu verwenden
Identifizieren von Funktionen in DLLs.
Minimal müssen Sie den Namen der Funktion und den Namen der DLL angeben, die sie enthält.
Erstellen Sie eine Klasse zum Halten von DLL-Funktionen.
Sie können eine vorhandene Klasse verwenden, eine einzelne Klasse für jede nicht verwaltete Funktion erstellen oder eine Klasse erstellen, die einen Satz verwandter nicht verwalteter Funktionen enthält.
Erstellen Sie Prototypen in verwaltetem Code.
[Visual Basic] Verwenden Sie die
DeclareAnweisung mit denFunctionUndLibSchlüsselwörtern. In einigen seltenen Fällen können SieDllImportAttributemit den Shared-Funktion-Schlüsselwörtern verwenden. Diese Fälle werden weiter unten in diesem Abschnitt erläutert.[C#] Verwenden Sie das
DllImportAttribute, um die DLL und Funktion zu identifizieren. Markieren Sie die Methode mit demstaticundexternModifikator.[C++] Verwenden Sie
DllImportAttribute, um die DLL und Funktion zu identifizieren. Markieren Sie die Wrappermethode oder -funktion mit extern "C".Rufen Sie eine DLL-Funktion auf.
Rufen Sie die Methode für Ihre verwaltete Klasse wie jede andere verwaltete Methode auf. Das Übergeben von Strukturen und die Implementierung von Rückruffunktionen sind Sonderfälle.
Beispiele, die veranschaulichen, wie .NET-basierte Deklarationen erstellt werden, die mit Platform Invoke verwendet werden sollen, finden Sie unter Marshalling Data with Platform Invoke.
Genauere Betrachtung von Plattformaufrufen
Das Platform Invoke basiert auf Metadaten, um exportierte Funktionen zu lokalisieren und ihre Argumente zur Laufzeit zu marshallen. Die folgende Abbildung veranschaulicht diesen Prozess.
Wenn die Plattform eine nicht verwaltete Funktion aufruft, führt sie die folgende Abfolge von Aktionen aus:
Sucht die DLL, die die Funktion enthält.
Lädt die DLL in den Arbeitsspeicher.
Suchen der Adresse der Funktion im Arbeitsspeicher und Übertragen ihrer Argumente auf den Stapel, wobei die Daten bei Bedarf gemarshallt werden.
Hinweis
Das Suchen und Laden der DLL und das Auffinden der Adresse der Funktion im Arbeitsspeicher erfolgen nur beim ersten Aufruf der Funktion.
Überträgt die Steuerung an die nicht verwaltete Funktion.
Der Plattformaufruf löst Ausnahmen aus, die von der nicht verwalteten Funktion für den verwalteten Aufrufer generiert wurden.