Verschiedene Marshallingbeispiele

Faktoren wie Garbage Collection und Threading können das Verhalten des Interop-Marshallers beeinflussen. Darüber hinaus können kleine Unterschiede bei der Programmierung und zwischen den Typmodellen die Übergabe von Daten an eine nicht verwaltete Bibliothek verkomplizieren. Dieser Abschnitt enthält Beispiele, in denen einige dieser Unterschiede zum Tragen kommen.

In der folgenden Tabelle finden Sie Marshalloptionen für verschiedene Elementtypen, eine Beschreibung ihrer Verwendung sowie einen Link zum entsprechenden Beispiel.

Elementtyp

Beschreibung

Beispiel

Funktionszeiger

Übergibt einen Delegaten an eine nicht verwaltete Funktion, die einen Funktionszeiger erwartet.

Rückruf

HandleRef

Verwendet die HandleRef-Struktur, um die Garbage Collection zu verhindern.

HandleRef

LPARAM

Verwendet die GCHandle-Struktur, um ein verwaltetes Objekt an eine nicht verwaltete Funktion zu übergeben, die einen LPARAM-Typ erwartet.

GCHandle

Singlethread-Apartment (STA)/Multithread-Apartment (MTA)

Ändert die Standardeinstellungen für Apartments, wenn eine nicht verwaltete Funktion CoInitialize aufruft.

ActiveDir

void*

Ruft eine Funktion auf, die den Parameter void* besitzt.

Void

Siehe auch

Konzepte

Datentypen für den Plattformaufruf

Marshallen von Zeichenfolgen

Marshallen von Klassen, Strukturen und Unions

Marshallen von Typenarrays

Weitere Ressourcen

Marshallen von Daten mit Plattformaufruf