Взаимодействие процессов
Приложения на основе Win32 можно запускать на 64-разрядной платформе Windows с помощью слоя эмуляции. Windows 10 в ARM включает слой эмуляции x86-on-ARM64. Дополнительные сведения см. в разделе Запуск 32-разрядных приложений.
В 64-разрядной версии Windows 64-разрядный процесс не может загрузить 32-разрядную библиотеку динамической компоновки (DLL). Кроме того, 32-разрядный процесс не может загрузить 64-разрядную библиотеку DLL. Однако 64-разрядная версия Windows поддерживает удаленные вызовы процедур (RPC) между 64-разрядными и 32-разрядными процессами (как на одном компьютере, так и на разных компьютерах). В 64-разрядной версии Windows 32-разрядный COM-сервер может взаимодействовать с 64-разрядным клиентом, а 64-разрядный COM-сервер может взаимодействовать с 32-разрядным клиентом. Таким образом, если у вас есть 32-разрядная библиотека DLL, которая не поддерживает COM, ее можно упаковать в непроцессный COM-сервер и использовать COM для маршалинга вызовов и из 64-разрядного процесса.
В настоящее время серверы обработки регистрируются с помощью записи реестра InprocServer. На 64-разрядных серверах Windows 64-и 32-разрядные серверы обработки должны использовать запись InprocServer32.
Для дескрипторов портов, которые по своей природе являются локальными для компьютера и никогда не будут использоваться через 32-разрядную границу до 64-разрядной границы, используйте тип HANDLE_PTR вместо типа INT_PTR или DWORD_PTR. Это включает перенос интерфейсов RPC, которые передают такие дескрипторы, как значения DWORD. 64-разрядная HANDLE_PTR составляет 64 бита на проводе (не усечено) и поэтому не требует сопоставления. (32-разрядная HANDLE_PTR составляет 32 бита на проводе.)
Дополнительные сведения см. в разделе Проектирование 64-разрядных интерфейсов, совместимых с.