句柄的由来[1]
windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的地址需要变动,变动以后就需要有人来记录管理变动,(就好像户籍管理一样),因此系统用句柄来记载数据地址的变更。
数据对象加载进入内存中之后即获得了地址,但是这个地址并不是固定的,(至于为什么以及什么情况下变动具体需要大家研究虚拟地址的原理与机制我这里只提我确定知道的例子)数据对象会根据需要在内存与硬盘之间游弋移动(例如不常用的数据会为常用数据让出其占用的内存空间进而被淘汰进硬盘中的虚拟内存之中以优化配置整体系统的资源进而提升效率性能),因此其物理地址总是变动的,那么作为管理者 则必须对 管理对象所发生的变化了如指掌才行,因此系统为进程分配固定的地址(句柄)来存储进程下的数据对象变化后的地址也就是当前的地址,其实设计机制很简单 :系统的某个部门移动了对象的地址后,同时上报给句柄所属部门管理者,管理者将改动写入句柄即可。该数据被重新起用时去其所属句柄内按内容存取即可。
句柄,英文:HANDLE,在Windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。但由此而产生的句柄概念也大同小异,比如:《Microsoft Windows 3 Developer's Workshop》(Microsoft Press,by Richard Wilton)一书中句柄的概念是:在Windows环境中,句柄是用来标识项目的。
在程序设计中,句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间接访问对象的模式增强了系统对引用对象的控制。
在上世纪80年代的操作系统(如Mac OS 和Windows)的内存管理中,句柄被广泛应用。Unix系统的文件描述符基本上也属于句柄。和其它桌面环境一样,WindowsAPI大量使用句柄来标识系统中的对象,并建立操作系统与用户空间之间的通信渠道。例如,桌面上的一个窗体由一个HWND类型的句柄来标识。如今,内存容量的增大和虚拟内存算法使得更简单的指针愈加受到青睐,而指向另一指针的那类句柄受到冷淡。尽管如此,许多操作系统仍然把指向私有对象的指针以及进程传递给客户端的内部数组下标称为句柄。[2]

WINDOWS程序中并不是用
在《WINDOWS编程短平快》(南京大学出版社)一书中是这么说的:句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控件,位图,GDI对象等等。WINDOWS句柄有点象C语言中的
从上面的2个定义中我们可以看到,句柄是一个

HRESULT是什么,应该如何理解相关推荐

  1. COM First Teck.

    COM--到底是什么?--COM标准的要点介绍,它被设计用来解决什么问题? 基本元素的定义--COM术语以及这些术语的含义. 使用和处理COM对象--如何创建.使用和销毁COM对象. 基本接口--描述 ...

  2. COM编程入门---转发

    [ 原创文档 本文适合中级读者 已阅读68380次 ] 文档代码工具 COM编程入门 第一部分--什么是COM,如何使用COM 编译:赵湘宁 下载源代码 本文的目的是为刚刚接触COM的程序员提供编程指 ...

  3. 什么是COM,如何使用COM

    <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso- ...

  4. COM编程入门 第一部分——什么是COM,如何使用COM

    本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念. 内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件. 本文不包括如何编写自己的COM对象和接口. ...

  5. COM编程入门(1)

    原文地址:http://www.cppblog.com/mzty/archive/2005/12/23/2003.html COM编程入门 第一部分 什么是COM,如何使用COM 文/赵湘宁 下载例子 ...

  6. 理解ATL中的一些汇编代码

    我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以 ...

  7. dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程

    在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序.本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑.包括如何寻找 dotnet 运行 ...

  8. 我对骨骼动画的理解(最精减的骨骼动画类)

    本文原创版权归 GameRes wc4790150 所有,如有转载,请按如下方式显式标明原创作者及出处,以示尊重!! 作者:wc4790150  出处:http://bbs.gameres.com/s ...

  9. 理解COM的线程套件(转)

    junguo 下载源代码 一篇技术文章,给我更多的却是感慨.和作者一样,愿与大家共勉. 简序 大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件.那时候只知道COM这个名 ...

最新文章

  1. java数据类型_java 数据类型
  2. linux双网卡绑定实现冗余与负载均衡
  3. applet打包的MANIFEST.MF配置
  4. 【转】二维图形的几何变换
  5. 【机器学习实战】意大利Covid-19病毒感染数学模型及预测
  6. Cpp / #error、static_assert、assert 区别
  7. 普罗米修斯监控系统_基于Prometheus和Grafana的监控平台 - 环境搭建
  8. 仓库处理中 无法修改_上海电商仓储物流公司,冷链仓库-上海玖日仓储
  9. 015. 深入JVM学习—Java引用类型
  10. android层叠卡片特效_LINE生日贺卡功能升级 快来试试私人生日贺卡 气球祝福特效...
  11. 《Hadoop实战(第2版)》迷你书
  12. idea 如何查看jdk源码
  13. Python实现图像的全景拼接
  14. 万字长文带来2021最稳C/C++学习路线
  15. 无线认证 服务器是怎么回事,无线wifi认证服务器参数设置方法是什么
  16. 一次WTS-WAF绕过
  17. 【读书】格鲁夫给经理人的第一课-管理杠杆率
  18. 音频文件如何转成mp3格式
  19. PYTHON 获取邮件发送时间
  20. 博学谷java百度网盘_博学谷javaee在线就业班2020网盘

热门文章

  1. 网页设计图片向上浮动_果冻公开课第六课:5分钟理解浮动布局
  2. python1乘到10_python写一个循环1+到10打印计算步骤的脚本——纯粹无聊玩的
  3. 信息学奥赛一本通 1188:菲波那契数列(2) | OpenJudge NOI 2.3 1760:菲波那契数列(2)
  4. 信息学奥赛一本通 2024:【例4.10】末两位数
  5. 信息学奥赛一本通 1135:配对碱基链 | OpenJudge NOI 1.7 07
  6. 信息学奥赛一本通 1052:计算邮资 | OpenJudge NOI 1.4 14
  7. 信息学奥赛一本通(1156:求π的值)
  8. 信息学奥赛一本通C++语言——1100:金币
  9. oracle 添加监听地址,oracle批改监听地址为localhost
  10. python2.7安装scipy_在centOS上离安装Python2.7以及numpy,scipy,matplot,sklearn等