Windows中的句柄

来源:互联网 发布:网络被劫持是什么意思 编辑:程序博客网 时间:2024/05/16 18:32

定义:
句柄是用来标识项目的。(它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。有一说法是指向指针的指针)
项目包括:模块(module)、任务(task)、实例 (instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域 (region),以及设备描述表(device context)。
实质:
在windows中,句柄是和对象一一对应的32位无符号整数值。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
形象说法:要想控制某一设备,不去直接控制设备,而是控制设备的操作手柄。
使用句柄的好处:
windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问、创建和销毁对象。出于封装地考虑,windows并不想向程序员返回指针。
句柄和对象映射:
在windows中,存在两种映射方式
a. 全等映射,也即,句柄本身就是一个指针,映射在这里只是类型转换而已。这种情况有,进程实例句柄或模块句柄,以及资源句柄等等
b. 基于表格的映射。这是对象指针与句柄之间最普通的映射机制。操作系统创建表格,并保存所有要考虑的对象。需要创建新对象时,要先在表格中找到空入口,然后把表示对象的数据添入其中。当对象被删除时,它的数据成员和其在表中的入口被释放。
句柄和指针的区别:句柄就是你的上smth的ID 通过这个id,无论你在那里我都可以找到你, 但是指针就好像你上机的地方, 在这个地方,可以找到你, 但是你的id是不变化的 ,上机地方可以变。
引喻:
牧童遥指杏花村 牧童的手为指针,杏花村的牌子为句柄,杏花村酒店为对象的实例

0 0
原创粉丝点击