Dela via


Interprocesskommunikation mellan 32-bitars och 64-bitarsprogram

Följande tekniker kan användas för kommunikation mellan 32-bitars- och 64-bitarsprogram:

  • 64-bitarsversioner av Windows använder 32-bitarshandtag för samverkan. När du delar ett handtag mellan 32-bitars och 64-bitarsprogram är endast de lägre 32 bitarna betydande, så det är säkert att trunkera handtaget (när du skickar det från 64-bitars till 32-bitars) eller signera-utöka handtaget (när du skickar det från 32-bitars till 64-bitars). Referenser som kan delas inkluderar referenser till användarobjekt som windows (HWND) och referenser till GDI-objekt som pennor och penslar (HBRUSH och HPEN).
  • Namngivna objekt som skapats från en 32-bitarsprocess kan nås av 64-bitarsprocesser och vice versa (med förbehåll för vanliga säkerhetsregler). Namngivna objekt omfattar objekt som mutexar, semaforer och filhandtag.
  • Fjärrproceduranrop (RPC) kan användas.
  • COM LocalServers kan användas om både 32-bitars- och 64-bitars proxy-/stub-DLL:er registreras för alla gränssnitt som används.
  • Delat minne kan användas om pekarberoende typer konverteras korrekt (eller undviks).
  • Funktionerna CreateProcess och ShellExecute kan starta 32- och 64-bitarsprocesser från antingen 32- eller 64-bitarsprocesser med vissa begränsningar.

Det går inte att starta en 64-bitars körbar fil under %windir%\System32 från en 32-bitarsprocess, eftersom filsystemets omdirigering omdirigerar sökvägen. Inaktivera inte omdirigering för att åstadkomma detta. använd %windir%\Sysnative i stället. Mer information finns i Omdirigering av filsystem.