Marshallen von Daten mit Plattformaufruf
Um aus einer nicht verwalteten Bibliothek exportierte Funktionen aufzurufen, benötigt eine .NET Framework-Anwendung einen Funktionsprototyp in nicht verwaltetem Code, der die nicht verwaltete Funktion repräsentiert. Wenn Sie einen Prototyp erstellen möchten, der es dem Plattformaufruf ermöglicht, Daten ordnungsgemäß zu marshallen, müssen Sie wie folgt vorgehen:
Wenden Sie das DLLImportAttribute-Attribut auf die statische Funktion oder Methode in verwaltetem Code an.
Ersetzten Sie nicht verwaltete Datentypen durch verwaltete Datentypen.
Sie können die mit einer nicht verwalteten Funktion gelieferte Dokumentation verwenden, um einen äquivalenten verwalteten Prototyp zu erstellen, indem Sie das Attribut mit seinen optionalen Feldern anwenden und nicht verwaltete Datentypen durch verwaltete Datentypen ersetzen. Anweisungen zum Anwenden des DllImportAttribute finden Sie unter Verwenden nicht verwalteter DLL-Funktionen.
In diesem Abschnitt finden Sie Beispiele, die demonstrieren, wie verwaltete Funktionsprototypen zum Übergeben von Argumenten an und Empfangen von Rückgabewerten von Funktionen, die aus nicht verwalteten Bibliotheken exportiert wurden, erstellt werden. Darüber hinaus demonstrieren diese Beispiele, wann das MarshalAsAttribute-Attribut und die Marshal-Klasse zu verwenden sind, um Daten explizit zu marshallen.
In diesem Abschnitt
Datentypen für den Plattformaufruf
Enthält eine Liste der verwalteten Datentypen und der entsprechenden nicht verwalteten Datentypen.PinvokeLib.dll
Stellt Code bereit, mit dem die von Pinvoke.dll zur Verfügung gestellten Bibliotheksfunktionen definiert werden.Marshallen von Zeichenfolgen
Beschreibt, wie Zeichenfolgen durch einen Wert, durch einen Verweis, in Strukturen, in Klassen und in Arrays übergeben werden.Marshallen von Klassen, Strukturen und Unions
Beschreibt, wie Klassen durch einen Wert, verschiedene Strukturen und Unions mit Wert und gemischten Typen übergeben werden.Marshallen von Typenarrays
Beschreibt, wie mehrdimensionale Arrays von ganzen Zahlen durch einen Wert und eindimensionale Arrays durch einen Verweis übergeben werden.Verschiedene Marshallingbeispiele
Beschreibt die Aspekte der Garbage Collection und des Threadings, die das Verhalten von Interop-Marshalling beeinflussen.
Verwandte Abschnitte
Interop-Marshalling
Erläutert das Marshalling für COM-Interop und Plattformaufruf.Standardmarshallingverhalten
Beschreibt die Regeln, die der Interop-Marshalldienst zum Marshallen von Daten verwendet.Verwenden nicht verwalteter DLL-Funktionen
Beschreibt das Aufrufen nicht verwalteter DLL-Funktionen mithilfe von Plattformaufruf.