Udostępnij za pośrednictwem


Komunikacja międzyprocesowa między aplikacjami 32-bitowymi i 64-bitowymi

Następujące techniki mogą służyć do komunikacji między aplikacjami 32-bitowymi i 64-bitowymi:

  • 64-bitowe wersje systemu Windows używają 32-bitowych dojść do współdziałania. W przypadku udostępniania uchwytu między aplikacjami 32-bitowymi i 64-bitowymi tylko dolne 32 bity są znaczące, więc bezpieczne jest obcięcie uchwytu (w przypadku przekazywania go z 64-bitowego do 32-bitowego) lub rozszerzenie uchwytu (w przypadku przekazywania go z 32-bitowego do 64-bitowego). Dojścia, które mogą być współużytkowane, obejmują dojścia do obiektów użytkownika, takich jak okna (HWND), uchwyty do obiektów GDI, takich jak pióra i pędzle (HBRUSH i HPEN) i obsługuje nazwane obiekty, takie jak mutexes, semaphores i uchwyty plików.
  • Można użyć zdalnych wywołań procedur (RPC).
  • Serwery lokalne COM można użyć, jeśli zarówno 32-bitowe, jak i 64-bitowe biblioteki DLL serwera proxy/wycinków są rejestrowane dla wszystkich używanych interfejsów.
  • Pamięć udostępniona może być używana, jeśli typy zależne od wskaźnika są poprawnie konwertowane (lub unikać).
  • Funkcje CreateProcess i ShellExecute mogą uruchamiać procesy 32-bitowe i 64-bitowe z 32-bitowych lub 64-bitowych procesów z pewnymi ograniczeniami.

64-bitowy plik wykonywalny znajdujący się w %windir%\System32 nie może zostać uruchomiony z 32-bitowego procesu, ponieważ przekierowanie ścieżki przez przekierowanie systemu plików. Nie wyłączaj przekierowania, aby to osiągnąć; Zamiast tego użyj %windir%\Sysnative. Aby uzyskać więcej informacji, zobacz przekierowanie systemu plików.