Udostępnij przez


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). Uchwyty, które można udostępniać, obejmują uchwyty do obiektów użytkownika, takich jak okna (HWND) i uchwyty do obiektów GDI, takich jak długopisy i szczotki (HBRUSH i HPEN).
  • Dostęp do nazwanych obiektów utworzonych na podstawie procesu 32-bitowego można uzyskać za pomocą procesów 64-bitowych i odwrotnie (z zastrzeżeniem zwykłych reguł zabezpieczeń). Nazywane obiekty obejmują obiekty, takie jak muteksy, semafory i dojścia 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.