Utilisation d’un PInvoke explicite en C++ (attribut DllImport)
.NET Framework fournit des fonctionnalités explicites d’appel de plateforme (ou PInvoke) avec l’attribut Dllimport
pour permettre aux applications managées d’appeler des fonctions non managées empaquetées dans des DLL. PInvoke explicite est requis pour les situations où les API non managées sont empaquetées en tant que DLL et que le code source n’est pas disponible. L’appel de fonctions Win32, par exemple, nécessite PInvoke. Sinon, utilisez p{Invoke implicite ; consultez Utilisation de l’interopérabilité C++ (PInvoke implicite) pour plus d’informations.
PInvoke fonctionne à l’aide DllImportAttributede . Cet attribut, qui prend le nom de la DLL comme premier argument, est placé avant une déclaration de fonction pour chaque point d’entrée DLL qui sera utilisé. La signature de la fonction doit correspondre au nom d’une fonction exportée par la DLL (mais une conversion de type peut être effectuée implicitement en définissant les DllImport
déclarations en termes de types managés.)
Le résultat est un point d’entrée managé pour chaque fonction DLL native qui contient le code de transition nécessaire (ou thunk) et les conversions de données simples. Les fonctions managées peuvent ensuite appeler la DLL via ces points d’entrée. Le code inséré dans un module à la suite de PInvoke est entièrement géré.
Dans cette section
Guide pratique pour appeler des DLL natives à partir du code managé à l’aide de PInvoke
Guide pratique pour marshaler des chaînes à l’aide de PInvoke
Guide pratique pour marshaler des structures à l’aide de PInvoke
Guide pratique pour marshaler des tableaux à l’aide de PInvoke
Guide pratique pour marshaler des pointeurs fonction à l’aide de PInvoke
Guide pratique pour marshaler des pointeurs incorporés à l’aide de PInvoke