Exemples divers de marshaling
Des facteurs tels que le garbage collection et les threads peuvent avoir un impact sur le comportement du marshaleur d'interopérabilité. En outre, de subtiles différences de programmation et de modèles de type peuvent rendre le passage de données à une bibliothèque non managée déconcertant. Cette section fournit un ensemble d'exemples traitant de certaines de ces différences.
Le tableau suivant répertorie les options de marshaling pour divers types d'éléments, décrit leur usage et fournit un lien vers l'exemple correspondant.
Type d'élément |
Description |
Exemple |
---|---|---|
Pointeur fonction |
Passe un délégué vers une fonction non managée qui s'attend à un pointeur fonction. |
|
Utilise la structure HandleRef pour empêcher le garbage collection. |
||
LPARAM |
Utilise la structure GCHandle pour passer un objet managé vers une fonction non managée qui attend un type LPARAM. |
|
Thread cloisonné (STA, Single-Threaded Apartment)/Thread cloisonné (MTA, Multithreaded Apartment). |
Change les paramètres d'apartment par défaut lorsqu'une fonction non managée appelle CoInitialize. |
|
void* |
Appelle une fonction avec void* comme paramètre. |
Voir aussi
Concepts
Types de données d'appel de code non managé
Marshaling de classes, de structures, et d'unions
Marshaling des tableaux de types