句柄

原创 2015年07月08日 14:51:25

1、句柄概念

       句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标示应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。

       WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的。相反,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

       句柄是一个标识符,是拿来标识对象或者项目的。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

2、句柄作用

  如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存中的。简单地理解,似乎我们只要获知这个内存的首地址,就可以随时用这个地址访问对象了。如果您真的这样认为,那您可就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找那一个对象呢?

  为了解决这个问题,Windows操作系统为全体应用程序腾出一些内存单元,用来专门登记各应用程序的对象在内存中的地址的变化,而前者的物理地址在系统运行期间是始终保持不变的。Windows内存管理器移动了对象在内存中的位置后,会把该对象新的地址及时地告知给对应的句柄进行更新。这样我们只要知道这个句柄,就可以间接地知道对象具体在内存中的哪个位置了。这个地址是在对象装载(Load)时由系统分配给的,当对象卸载时(Unload)又释放给系统。

版权声明:本文为博主http://www.feixueteam.net原创文章,未经博主允许不得转载。

CentOS7修改单个进程可打开的最大文件句柄数

对于“linux修改单个进程可打开的最大文件句柄数”,在网上搜索了很多教程,基本都说得不全或者已经过时了,经过亲自试验,修改成功,现总结如下: 1./etc/security/limits.conf中...

取色取句柄

  • 2015年11月10日 05:27
  • 66KB
  • 下载

Matlab中函数句柄@的作用及介绍

问:f=@(x)acos(x)表示什么意思?其中@代表什么? 答:表示f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件: % f.m function  ...
  • kevinhg
  • kevinhg
  • 2013年04月28日 09:07
  • 68770

窗口句柄自动抓取

  • 2016年09月02日 14:53
  • 653KB
  • 下载

找句柄工具

  • 2013年10月17日 20:42
  • 262KB
  • 下载

获取控制台窗口的句柄(HWND)和程序中输出回车键

一、获取窗口句柄基于类名或窗口名称: http://support.microsoft.com/kb/124103/zh-cn Win32 API 提供用于获取与一个控制台应用程序相关联的窗口句柄没...

编程助手,获取句柄

  • 2013年07月19日 18:13
  • 188KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:句柄
举报原因:
原因补充:

(最多只允许输入30个字)