MSDN告诉我,在Interprocess Communication中,windows的句柄可以在32位和64位应用程序之间共享。然而,在Win32中,HWND是32位,而在64位Windows中是64位。那么如何共享句柄呢?
我猜同样的问题也适用于命名对象的句柄,如互斥锁、信号量和文件句柄。
发布于 2009-12-01 06:08:41
它们可以共享的事实不意味着在Win64进程中只使用低32位吗?Windows句柄是索引而不是指针,至少据我所知,所以除非MS想要允许超过2^32个窗口/文件/互斥等句柄,否则没有理由在Win64上使用高32位的void*
。
发布于 2009-12-02 07:57:58
我刚刚收到一封来自微软WOW64开发人员的电子邮件,他确认:
句柄是32位的,可以安全地截断/零扩展。对于内核对象句柄和用户/GDI句柄都是如此。
发布于 2010-11-26 23:43:46
请参阅微软接口定义语言(MIDL)移植指南,第12页(http://msdn.microsoft.com/en-us/library/ms810720.aspx)
下面看一下用户和GDI句柄是带符号扩展的32b值
https://stackoverflow.com/questions/1822667
复制相似问题