句柄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、

不要说话
原文地址:https://www.cnblogs.com/sxudk/p/3793451.html