Blu*_*kMN 23
MSDN声明:
64位版本的Windows使用32位句柄来实现互操作性.在32位和64位应用程序之间共享句柄时,只有低32位是重要的,因此截断句柄(将其从64位传递到32位)或对句柄进行符号扩展是安全的(当它从32位传递到64位时).可共享的句柄包括用户对象的句柄(如windows(HWND)),GDI对象(如笔和画笔(HBRUSH和HPEN))的句柄,以及指定对象(如互斥锁,信号量和文件句柄)的句柄.
同样值得注意的是,该页面上添加了此评论:
跨进程边界共享此类句柄的正确方法是将32位句柄零扩展到64位,反之亦然,方法是将64位句柄截断为32位,丢弃最高位.
注意手柄"符号扩展"与"零扩展"手柄之间的区别.
编辑:从对这个问题的删除答案中看到的讨论判断,我认为签署扩展32位句柄以达到64位句柄而不是零扩展的重要性是保留对INVALID_HANDLE_VALUE的正确处理句柄的价值.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx
| 归档时间: |
|
| 查看次数: |
7072 次 |
| 最近记录: |