对于操作系统来说,句柄就是指向核心态的某段内存的指针;对于用户来说,就是某段数据的ID。
句柄是一个32位的整数,实际上是 WINDOWS 在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为 WINDOWS 的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理内存。所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问的对象的句柄传递给系统,系统根据句柄检索自己维护的对象列表就能知道程序想访问的对象及其物理地址了。
一个整型值,用来唯一标识系统资源。
一个 Windows 内核对象创建时系统回返回一描述该对象的内核数据结构,以后访问该对象时以此数据结构为标识。但 SDK 每次调用时用它作参数会加大开销,故系统为每个进程(不是线程)创建一数组,每个元素指向一个对象的数据结构,故可通过数组的下标(即 HANDLE )来标识此对象。从某种意义上讲一个句柄可认为是一个二级指针。
type def unsigned int HANDLE
句柄是一种指向指针的指针。打个比方,我们要控制一个人,让他乖乖听话,就要抓住他的把柄,类似的,我们要控制一个对象,要它听话,就是要抓住它的句柄。
网上参考:
http://topic.csdn.net/t/20010210/21/67638.html
http://topic.csdn.net/t/20010202/10/63767.html
http://topic.csdn.net/t/20010621/18/167197.html