Prozessübergreifende Kommunikation zwischen 32-Bit- und 64-Bit-Anwendungen

Die folgenden Techniken können für die Kommunikation zwischen 32-Bit- und 64-Bit-Anwendungen verwendet werden:

  • 64-Bit-Versionen von Windows verwenden 32-Bit-Handles für die Interoperabilität. Bei der Freigabe eines Handles zwischen 32-Bit- und 64-Bit-Anwendungen sind nur die niedrigeren 32 Bits von Bedeutung, sodass es sicher ist, das Handle abzuschneiden (wenn es von 64-Bit zu 32-Bit übergeben wird) oder das Handle zu signieren (bei der Übergabe von 32-Bit auf 64-Bit). Handles, die freigegeben werden können, umfassen Handles für Benutzerobjekte wie Fenster (HWND), Handles für GDI-Objekte wie Stifte und Pinsel (HBRUSH und HPEN) sowie Handles für benannte Objekte wie Mutexe, Semaphore und Dateihandles.
  • Remoteprozeduraufrufe (RPC) können verwendet werden.
  • COM LocalServers können verwendet werden, wenn sowohl 32-Bit- als auch 64-Bit-Proxy-/Stub-DLLs für alle verwendeten Schnittstellen registriert sind.
  • Freigegebener Arbeitsspeicher kann verwendet werden, wenn zeigerabhängige Typen ordnungsgemäß konvertiert (oder vermieden werden).
  • Die Funktionen CreateProcess und ShellExecute können mit bestimmten Einschränkungen 32-Bit- und 64-Bit-Prozesse aus 32-Bit- oder 64-Bit-Prozessen starten.

Eine ausführbare 64-Bit-Datei unter %windir%\System32 kann nicht aus einem 32-Bit-Prozess gestartet werden, da der Pfad vom Dateisystemumleitungsor umgeleitet wird. Deaktivieren Sie die Umleitung nicht, um dies zu erreichen. verwenden Sie stattdessen %windir%\Sysnative. Weitere Informationen finden Sie unter Dateisystemumleitung.