1

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

4

1 回答 1

1

是的,它可以。对于 GDI 对象句柄和窗口句柄,保证只有低 32 位将用于 64 位模式,因此在 32 位和 64 位之间传递它们应该是安全的。当然,COM 服务器必须处于进程之外。

从这个页面引用

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

同样,从这个页面

64 位版本的 Windows 使用 32 位句柄来实现互操作性。在 32 位和 64 位应用程序之间共享句柄时,只有低 32 位有效,因此截断句柄(将其从 64 位传递到 32 位时)或对句柄进行符号扩展(将其从 32 位传递到 64 位时)。可以共享的句柄包括用户对象(如窗口 (HWND))的句柄、GDI 对象(如钢笔和画笔(HBRUSH 和 HPEN))的句柄,以及命名对象(如互斥体、信号量和文件句柄)的句柄。

于 2013-03-25T10:01:00.400 回答