吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6556|回复: 14
收起左侧

[其他转载] 菜鸟进,句柄功能的一个形象比喻

 关闭 [复制链接]
恶魔猎手的魔 发表于 2009-5-19 10:20
本帖最后由 恶魔猎手的魔 于 2009-5-19 10:22 编辑

  handle的本意是把柄,把手的意思。是你与操作系统打交道的东东。举个通俗的例子,比如你考上了大学,入学后,学校(操作系统)会给你一个学生证号。注意,这个号码是学校指定的,你无法自选。有了这个号码(学生证,假设一证多用)享受学校提供的服务:如你就可以去图书馆借书,去食堂吃饭,去教室上课等等。
    但你不能到食堂里买啤酒,因为学校不允许这种服务。而在计算机中系统提供的服务就是API调用,你有了HANDLE,就可以理直气壮地向系统提出调用API的服务。而指针的权力就大多了,有了指针你可以到处去喝酒,打架,学校(操作系统)管不着,所以句柄和指针的区别在于句柄指针调用系统提供的服务。而句柄虽然是一个能相互区别的号码,但与我们普通的ID号又有区别,普通的ID号是可以由程序员自己定义的,而句柄不行,它是对象生成是系统指定的,是为了区别系统中存在的各个对象,这个句柄不是由程序员符给的。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沉默的羔羊 发表于 2009-5-19 11:59
学习了,确实比较形象。。
zzage 发表于 2009-5-19 18:14
[s:374]...我来了,虽然说比较形象,但看完,我还是迷迷糊糊的....[s:357],这就是菜鸟的辛酸....
kings0527 发表于 2009-5-20 01:58
生动倒是生动  貌似不是这个比喻法吧。。。。大ZZ也不发表下看法
 楼主| 恶魔猎手的魔 发表于 2009-5-21 14:51
楼上的说说你的看法
ZeNiX 发表于 2009-5-22 14:11
比喻是很形象, 但也不完全正確.
Handle 只是系統發配給你的一個號碼牌.
得到這號碼牌之後, 你可以向系統要求對這號碼牌所對應的對象進行操作.
然而系統本身仍保留對每一操作的權限控制.
 楼主| 恶魔猎手的魔 发表于 2009-5-24 14:58
详细的了解,得学Windows 编程
NewbieCoder 发表于 2009-5-25 22:11
句柄类似于一个索引号 OS通过这个索引号得到这个句柄对应的内核对象的地址 进而对内核对象进行操作

因为OS每个模块(ntoskrnl、win32k)都有自己的句柄管理器,所以ntoskrnl、win32k的句柄不能通用

对于ntoskrnl,由于其内部句柄对应的对象分为许多种,如Process Thread Event File等,所以特定的句柄只能使用一组特定的函数操作,比如File类型的句柄就只能用文件类型的Api,如ReadFile等函数操作。

对于不同的进程,ntoskrnl分别为其管理着一个句柄表,所以ntoskrnl的句柄是进程内有效地,而win32k全局只有一张句柄表(也可能是每个desktop或者session,不清楚),所以user32.dll的句柄是系统范围(desktop范围、session范围)通用的。
gongsui 发表于 2009-5-27 21:22
不过,好像句柄会变的,每次都不一样。
葵花 发表于 2009-5-31 17:17
来了,虽然说比较形象,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 06:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表