Partager via


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.

Rappel

HandleRef

Utilise la structure HandleRef pour empêcher le garbage collection.

HandleRef

LPARAM

Utilise la structure GCHandle pour passer un objet managé vers une fonction non managée qui attend un type LPARAM.

GCHandle

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.

ActiveDir

void*

Appelle une fonction avec void* comme paramètre.

Void

Voir aussi

Concepts

Types de données d'appel de code non managé

Marshaling de chaînes

Marshaling de classes, de structures, et d'unions

Marshaling des tableaux de types

Autres ressources

Marshaling de données à l'aide de l'appel de code managé