32 位和 64 位应用程序之间的进程间通信

以下技术可用于 32 位和 64 位应用程序之间的通信:

  • 64 位版本的 Windows 使用 32 位句柄实现互作性。 在 32 位和 64 位应用程序之间共享句柄时,只有较低的 32 位很重要,因此可以安全地截断句柄(从 64 位传递到 32 位时)或对句柄进行签名(从 32 位传递到 64 位时)。 可共享的句柄包括用户对象的句柄(HWND)、GDI 对象的句柄(HBRUSHHPEN),以及用于命名对象(如互斥体、信号灯和文件句柄)的句柄。
  • 可以使用远程过程调用(RPC)。
  • 如果为使用的所有接口注册了 32 位和 64 位代理/存根 DLL,则可以使用 COM LocalServers。
  • 如果正确转换依赖于指针的类型(或避免),则可以使用共享内存。
  • CreateProcessShellExecute 函数可以从 32 位或 64 位进程启动 32 位和 64 位进程,但存在某些限制。

无法从 32 位进程启动位于 %windir%\System32 下的 64 位可执行文件,因为文件系统重定向程序会重定向路径。 不要禁用重定向来实现此目的;请改用 %windir%\Sysnative。 有关详细信息,请参阅 文件系统重定向程序