Marshaling de données à l'aide de l'appel de plate-forme

Pour appeler des fonctions exportées à partir d'une bibliothèque non managée, une application .NET Framework a besoin d'un prototype de fonction dans du code managé qui représente la fonction non managée. Pour créer un prototype qui permette l'appel de plate-forme afin de marshaler des données correctement, vous devez procéder comme suit :

  • Appliquez l'attribut DLLImportAttribute à la fonction ou méthode statique dans du code managé.

  • Remplacez les types de données managés par des types de données non managés.

Vous pouvez utiliser la documentation fournie avec une fonction non managée pour construire un prototype managé équivalent en appliquant l'attribut avec ses champs facultatifs et en remplaçant les types de données managés par des types non managés. Pour obtenir les instructions sur la manière d'appliquer l'attribut DllImportAttribute, consultez Consommation de fonctions DLL non managées.

Cette section fournit des exemples qui montrent comment créer des prototypes de fonction managée permettant de passer des arguments et de recevoir des valeurs de retour à partir de fonctions exportées par des bibliothèques non managées. Les exemples montrent également quand utiliser l'attribut MarshalAsAttribute et la classe Marshal pour marshaler explicitement des données.

Dans cette section

  • PinvokeLib.dll
    Fournit le code qui définit les fonctions de bibliothèque fournies par Pinvoke.dll.
  • Marshaling de chaînes
    Décrit comment passer des chaînes par valeur, par référence, dans des structures, des classes et des tableaux.
  • Marshaling des tableaux de types
    Décrit comment passer des tableaux multidimensionnels d'entiers par valeur et comment passer des tableaux unidimensionnels par référence.
  • Exemples divers de marshaling
    Décrit les aspects de garbage collection et de thread qui affectent le comportement de marshaling d'interopérabilité.

Rubriques connexes