32 位和 64 位应用程序之间的进程间通信
以下技术可用于 32 位和 64 位应用程序之间的通信:
- 64 位版本的 Windows 使用 32 位句柄实现互操作性。 在 32 位和 64 位应用程序之间共享句柄时,只有较低的 32 位是重要的,因此在将句柄从 64 位传递到 32 位) 时,可以安全地截断句柄 (,或者在将句柄从 32 位传递到 64 位) 时对句柄 (进行签名。 可共享的句柄包括用户对象的句柄(例如 windows (HWND) ),GDI 对象的句柄(如笔和画笔 (HBRUSH 和 HPEN) ),以及命名对象(如互斥体、信号灯和文件句柄)的句柄。
- 可以使用远程过程调用 (RPC) 。
- 如果为使用的所有接口注册了 32 位和 64 位代理/存根 DLL,则可以使用 COM LocalServers。
- 如果指针依赖类型正确转换 (或避免) ,则可以使用共享内存。
- CreateProcess 和 ShellExecute 函数可以从 32 位或 64 位进程启动 32 位和 64 位进程,但存在某些限制。
无法从 32 位进程启动位于 %windir%\System32 下的 64 位可执行文件,因为文件系统重定向程序会重定向路径。 请勿禁用重定向来实现此目的;请改用 %windir%\Sysnative。 有关详细信息,请参阅 文件系统重定向程序。