|
|
|
P/Invoke et interaction avec les API nativesLe Compact Framework est déjà très complet, et il s’améliore à chaque nouvelle version. Mais parfois certaines fonctions doivent être appelées au niveau du système car il n’existe aucun moyen de les atteindre en code managé. Services Platform Invocation (P/Invoke)Les services Platform Invocation permettent à du code managé (.NET) d'appeler des fonctions non managées implémentées dans des DLL natives (non ActiveX). D'un point de vue sémantique, vous pouvez utiliser P/Invoke de la même façon que dans l'ensemble du .NET Framework mais en environnement .NET Compact Framework la prise en charge est limitée pour les objets et les types pouvant être marshallés entre un code managé et un code non managé. P/Invoke est hébergé dans l'espace de noms System.Runtime.InteropService. Dans votre code d'application, déclarez la fonction non gérée que vous souhaitez appeler via l'attribut DllImport. La description inclut le nom du module (nom du fichier DLL spécifique), le nom du point d'entrée (nom de la fonction non gérée que vous appelez), la convention d'appel et l'indicateur SetLastError. La convention d'appel décrit la façon dont les paramètres sont transmis vers la méthode non gérée. Dans .NET Compact Framework, la seule convention d'appel prise en charge est la convention WinAPI qui correspond à la convention C++ __cdecl. Par défaut, C# définit l'indicateur SetLastError sur faux. En le définissant sur vrai, vous pouvez appeler Marshal.GetLastWin32Error pour extraire la dernière erreur non gérée rencontrée. Par exemple, pour appeler la fonction SendMessage de la DLL non managée coredll.dll, vous devez inclure le code suivant dans votre projet : Visual Basic
Visual C#
Vous désirez la suite ? Le cours et les sources de cet atelier sont disponibles en téléchargement gratuit. |
|