Communication interprocess entre les applications 32 bits et 64 bits

Les techniques suivantes peuvent être utilisées pour la communication entre les applications 32 bits et 64 bits :

  • Les versions 64 bits de Windows utilisent des handles 32 bits pour l’interopérabilité. Lors du partage d’un handle entre des applications 32 bits et 64 bits, seuls les 32 bits inférieurs sont significatifs, il est donc prudent de tronquer le handle (lors du passage de 64 bits à 32 bits) ou de signer-étendre le handle (lors du passage de 32 bits à 64 bits). Les handles qui peuvent être partagés incluent des handles vers des objets utilisateur tels que windows (HWND), des handles vers des objets GDI tels que des stylets et des pinceaux (HBRUSH et HPEN), et des handles vers des objets nommés tels que des mutex, des sémaphores et des handles de fichier.
  • Les appels de procédure distante (RPC) peuvent être utilisés.
  • Les serveurs locaux COM peuvent être utilisés si les DLL proxy/stub 32 bits et 64 bits sont inscrites pour toutes les interfaces utilisées.
  • La mémoire partagée peut être utilisée si les types dépendant du pointeur sont correctement convertis (ou évités).
  • Les fonctions CreateProcess et ShellExecute peuvent lancer des processus 32 bits et 64 bits à partir de processus 32 bits ou 64 bits avec certaines limitations.

Un fichier exécutable 64 bits situé sous %windir%\System32 ne peut pas être lancé à partir d’un processus 32 bits, car le redirecteur du système de fichiers redirige le chemin. Ne désactivez pas la redirection pour ce faire ; utilisez %windir%\Sysnative à la place. Pour plus d’informations, consultez Redirecteur de système de fichiers.