Freigeben über


Interprocess-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 Bit signifikant, sodass es sicher ist, den Handle abzuschneiden (beim Übergeben von 64-Bit bis 32-Bit) oder sign-extenden sie (beim Übergeben von 32-Bit auf 64-Bit). Handles, die freigegeben werden können, umfassen Handles für Benutzerobjekte wie Windows (HWND) und Handles für GDI-Objekte wie Stifte und Pinsel (HBRUSH und HPEN).
  • Auf benannte Objekte, die aus einem 32-Bit-Prozess erstellt wurden, können über 64-Bit-Prozesse zugegriffen werden und umgekehrt (vorbehaltlich der üblichen Sicherheitsregeln). Benannte Objekte umfassen Objekte wie Mutexes, Semaphoren 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 Speicher kann verwendet werden, wenn zeigerabhängige Typen ordnungsgemäß konvertiert werden (oder vermieden werden).
  • Die CreateProcess- und ShellExecute- funktionen können 32-Bit- und 64-Bit-Prozesse aus 32-Bit- oder 64-Bit-Prozessen mit bestimmten Einschränkungen starten.

Eine 64-Bit-ausführbare Datei unter %windir%\System32 kann nicht über einen 32-Bit-Prozess gestartet werden, da der Dateisystemumleitung den Pfad umleitet. Deaktivieren Sie die Umleitung nicht, um dies zu erreichen; verwenden Sie stattdessen %windir%\Sysnative. Weitere Informationen finden Sie unter Dateisystemumleitung.