使用GDi绘图同时使用32& 64位应用程序

时间:2013-03-25 09:54:57

标签: visual-c++ mfc gdi+ gdi

可以将COM 32位进程外服务器用于64位进程的GDI绘图吗?

1 个答案:

答案 0 :(得分:1)

是的,它可以。对于GDI对象HANDLE和窗口HANDLES,保证在64位模式下只使用低32位,因此在32位和64位之间传递这些是安全的。当然,COM服务器必须不在进程中。

引自this page

  

在64位Windows上,进程外32位COM服务器可以与64位客户端通信,进程外64位COM服务器可以与32位客户端通信。因此,如果您有一个不支持COM的32位DLL,您可以将其包装在进程外的COM服务器中,并使用COM来封送来自64位进程的调用。

同样,来自this page

  

64位版本的Windows使用32位句柄来实现互操作性。在32位和64位应用程序之间共享句柄时,只有低32位是重要的,因此截断句柄(将其从64位传递到32位)或对句柄进行符号扩展是安全的(当它从32位传递到64位时)。可共享的句柄包括用户对象的句柄(如windows(HWND)),GDI对象(如笔和画笔(HBRUSH和HPEN))的句柄,以及指定对象(如互斥锁,信号量和文件句柄)的句柄。