- 0
- 0
- 约小于1千字
- 约 5页
- 2026-01-27 发布于山西
- 举报
第1页句柄(handle)从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。Windows系统中有许多内核对象(这里的对象不完全等价于“面向对象程序设计”一词中的“对象”,但实质上差不多),比如打开的文件,创建的线程,程序的窗口,等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,他们拥有大量的属性。为了保存这样一个对象的状态,往往需要上百甚至上千字节的内存空间,那么怎么在程序间或程序内部的子过程(函数)之间传递这些数据呢?拖着这成百上千的字节拷贝来拷贝去吗?显然会浪费效率。那么怎么办?
第2页句柄(handle)当然传递这些对象的首地址(通过指针)是一个办法,但这至少有两个缺点:暴露了内核对象本身,使得程序(而不是操作系统内核)也可以任意地修改对象地内部状态,这显然是操作系统内核所不允许的;操作系统有定期整理内存的责任,如果一些内存整理过一次后,对象被搬走了怎么办?
第3页句柄(handle)Windows操作系统就采用进一步的间接:在进程的地址空间中设一张表,表里头专门保存一些编号和由这个编号对应一个地址,而由那个地址去引用实际的对象,这个编号跟那个地址在数值上没有任何规律性的联系,纯粹是个映射而已。在Windows系统中,这个编号就叫做句柄。
第4页句柄(handle)Handle本身是一个32位的无符号整数,它用来代表一个内核对象,但它并不指向实际的内核对象,用户模式下的程序永远不可能获得一个内核对象的实际地址。那么Handle的意义何在?它实际上是作为一个索引在一个表中查找对应的内核对象的实际地址。那么这个表在哪里呢?每个进程都有这样的一个表,叫句柄表。该表的第一项就是进程自己的句柄,这也是为什么你调用GetCurrentProcess()总是返回0x7FFFFFFF原因。
第5页句柄(handle)简单地说,Handle就是一种用来间接代表一个内核对象的整数值。你可以在程序中使用handle来代表你想要操作的内核对象。这里的内核对象包括:事件(Event)、线程、进程、Mutex等等。我们最常见的就是文件句柄(filehandle)。另外要注意的是,Handle仅在其所属的进程中才有意义。将一个进程拥有的handle传给另一个进程没有任何意义。
您可能关注的文档
- 国网湖南电科院油分析实验室场地改造技术书.pdf
- TCP IP技术与Windows系统中句柄机制详解.pdf
- 珠穆朗玛峰攀登史重要回顾.pdf
- 女歌手演员转型历程及代表作简介.pdf
- 内存分配策略:基于首次适配算法动态数据写入与管理.pdf
- 2004年全国小学生英语竞赛四年级组初赛题.pdf
- QJGAC 1260.068-2013 圆柱销标准要求.pdf
- QJXP 16JT.009-2020汽车产品禁限物质要求.pdf
- 路桥工程项目施工技术管理培训PPT104页.pptx
- 行政事业单位审计常见问题100问(2025年版.docx
- 2025年消费趋势研究-重返县域,新周期里的理智与情感.pdf
- 首席经济学家展望(英)2026.pdf
- (汇编)机关办公室2025年度民主生活会召开情况报告.docx
- (汇编)党组2025年度民主生活会查摆问题整改方案.docx
- 2026年春节前廉政专题党课讲稿.docx
- HES B 018-08-润滑脂接头-本田标准-jap.PDF
- STD 5742104-201703 EN-磷化处理标准要求Y104.pdf
- ASME ASNI B 18.3.1M 凹槽头公制螺栓.pdf
- STD 11165-issue4-200910-工程用钢标准要求1650-eng.pdf
- 通用汽车全球采购分类-20170610(EN).pdf
最近下载
- 斯图尔特微积分第9版习题解答.pdf
- AQ 3009_危险场所电气安全防爆规范.pdf VIP
- DB32/T 4897-2024 磁混凝沉淀水处理技术规范.pdf VIP
- 内蒙古圣钒科技新能源有限责任公司锂电正极材料75000吨年磷酸铁锂改扩建项目环评环境影响报告表.docx VIP
- 部编版一年级语文上册-阅读理解(1—50篇打印版).pdf VIP
- 医院厉行节约反对浪费实施细则.docx
- 重症血液净化血管通路的建立与应用中国专家共识解读PPT课件.pptx VIP
- 加强医院感染性疾病科建设:XX医院“十五五”感染科能力提升规划.docx VIP
- 污水处理厂设备操作维护培训手册.pdf VIP
- 深度l“十五五”规划看金融行业:“科技金融”是重点:政策趋势、行业案例与投资机会.pdf VIP
原创力文档

文档评论(0)