Platform Invoke

P/Invoke (abréviation de Platform Invoke) permet à du code C# managé d’appeler des fonctions provenant de bibliothèques C non managées.

Le cas d’usage le plus courant est l’appel aux API natives de Windows (ex : kernel32.dll, user32.dll).

Pour appeler une fonction native :

  • On utilise le mot clé extern
  • On l’annote avec DllImport
  • On définit la signature exacte (nom, paramètres, type de retour)
// Appel à OpenProcess dans kernel32
[DllImport("kernel32", SetLastError = true)]
static extern nint OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId);

La plateforme pinvoke.net recense l’ensemble des fonctions pouvant être appellées avec P/Invoke.