Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’appel de plateforme est un service qui permet au code managé d’appeler des fonctions non managées implémentées dans des bibliothèques de liens dynamiques (DLL), telles que celles de l’API Windows. Il localise et appelle une fonction exportée et marshale ses arguments (entiers, chaînes, tableaux, structures, et ainsi de suite) sur la limite d’interopérabilité si nécessaire.
Cette section présente les tâches associées à l’utilisation de fonctions DLL non managées et fournit plus d’informations sur l’appel de plateforme. Outre les tâches suivantes, il existe des considérations générales et un lien fournissant des informations et des exemples supplémentaires.
Pour consommer des fonctions DLL exportées
Identifiez les fonctions dans les DLL.
Minimalement, vous devez spécifier le nom de la fonction et le nom de la DLL qui le contient.
Créez une classe pour contenir des fonctions DLL.
Vous pouvez utiliser une classe existante, créer une classe individuelle pour chaque fonction non managée ou créer une classe qui contient un ensemble de fonctions non managées associées.
Créez des prototypes dans du code managé.
[Visual Basic] Utilisez l'instruction
Declareavec les mots clésFunctionetLib. Dans certains cas rares, vous pouvez utiliserDllImportAttributeavec les mots clés 'Shared Function'. Ces cas sont expliqués plus loin dans cette section.[C#] Utilisez le
DllImportAttributepour identifier la DLL et la fonction. Marquez la méthode avec les modificateursstaticetextern.[C++] Utilisez le
DllImportAttributepour identifier la DLL et la fonction. Marquez la méthode ou la fonction wrapper avec l’extern « C ».-
Appelez la méthode sur votre classe managée comme vous le feriez pour toute autre méthode gérée. La transmission de structures et l’implémentation de fonctions de rappel sont des cas spéciaux.
Pour obtenir des exemples montrant comment construire des déclarations .NET à utiliser avec un appel de code non managé, consultez Marshaling de données avec un appel de code non managé.
Présentation détaillée de l'appel de code non managé
L’appel de plateforme s’appuie sur les métadonnées pour localiser les fonctions exportées et marshaler leurs arguments au moment de l’exécution. L'illustration ci-dessous montre ce processus.
Lorsque l’appel de plateforme appelle une fonction non managée, il effectue la séquence d’actions suivante :
Recherche la DLL contenant la fonction.
Charge la DLL en mémoire.
Il localise l’adresse de la fonction dans la mémoire et envoie (push) ses arguments sur la pile, en marshalant les données selon les besoins.
Remarque
La localisation et le chargement de la DLL et la localisation de l’adresse de la fonction en mémoire se produisent uniquement lors du premier appel à la fonction.
Transfère le contrôle à la fonction non managée.
L'appel de code non managé lève des exceptions générées par la fonction non managée pour l'appelant managé.