Verschiedene Marshallingbeispiele
Aktualisiert: November 2007
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. |
|
Verwendet die HandleRef-Struktur, um die Garbage Collection zu verhindern. |
||
LPARAM |
Verwendet die GCHandle-Struktur, um ein verwaltetes Objekt an eine nicht verwaltete Funktion zu übergeben, die einen LPARAM-Typ erwartet. |
|
Singlethread-Apartment (STA)/Multithread-Apartment (MTA) |
Ändert die Standardeinstellungen für Apartments, wenn eine nicht verwaltete Funktion CoInitialize aufruft. |
|
void* |
Ruft eine Funktion auf, die den Parameter void* besitzt. |
Siehe auch
Konzepte
Datentypen für den Plattformaufruf
Marshallen von Klassen, Strukturen und Unions