句柄handle c++
1、句柄是什么?
在windows中,句柄是和对象一一对应的32为无符号整数值。对象可以映射到唯一的句柄,句柄也可以以映射到唯一的对象。
2、为什么我们现在需要句柄?
windows需要向程序员提供必要的编程接口,在这些编程接口中,允许程序员访问、创建和销毁对象。但是,出于封装性考虑,windows并不想向coder返回指针。指针包含了太多的信息。首相,指针给出了对象存储的exact adds;其次,要操作一个指针,coder必须知道指针所指对象的内部结构特征,that‘s to say,windows必须向程序员暴露相应的数据结构,而这些数据结构也许是操作系统对coder隐藏的。
如果说COM技术向coder隐藏了数据,只暴露了接口并只允许按接口定义的方法操作数据的话,handle这种方式则允许你按自己的方式直接操作数据,but,windows有不向你直接暴露数据结构。直接操作数据是程序猿需要的,不暴露数据是windows所需要的。
句柄封装方式实现了各自所需。
3、句柄如何与对象映射?
封装别后,必须有一个地方可以实现解码,以实现句柄和对象的相互转换。在windows中,存在两种映射方式:
a/ 全等映射 句柄本身就是一个pointer,映射在这里只是 类型转换。进程实例句柄、模块句柄、资源句柄
b/ 基于表哥的映射 这是对象pointer与句柄之间 the most normal映射机制。操作系统创建表格,并保存所有要考虑的对象。需要穿件新对象是,要先在表格中找到空入口,然后把表示对象的数据填入其中。当对象被删除是,他的数据成员和其在表中的入口被释放。
4、
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。