标题:在win32汇编中,句柄和ID的区别与联系主要有哪些?
只看楼主
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
结帖率:100%
 问题点数:0 回复次数:9 
在win32汇编中,句柄和ID的区别与联系主要有哪些?
小菜刚接触WIN32汇编,对句柄实质上是什么,ID和句柄之间又有哪些的区别与联系,弄得不是很清楚,希望大家知道的,不管多少,都来说说自己的看法。
搜索更多相关主题的帖子: 句柄 汇编 联系 小菜 实质 
2008-07-13 21:45
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:0 
我也刚学没几天,刚开始看第5章.

ID是自己定义的,只要符合ID的命名规则就可以.

句柄是系统自己搞的一套东西,系统靠句柄来标识引用绝大部分东西,所以我们只是要去 get需要的句柄就可以了,至于句柄怎么分配的,句柄的具体数值是什么,在win32编程中好象没必要多了解.记得好象句柄的实际数值是它标识的东西的内存地址.
2008-07-13 22:01
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
得分:0 
句柄,会不会是资源、模块在内存中的首地址,甚至是物理地址,而并非是线性地址?当然,它是供调用者引用、控制资源、模块用的。
ID,是资源的标识符吧?它一般放在消息结构中,通过它,也可以引用资源。
这是我的看法,大家说说自己的理解哈,集思广益。
2008-07-13 22:34
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:0 
老兄你学的真细啊.ID就是标识符.跟常量变量的名一样理解吧.  句柄完全是系统里面流通的一套东西,只不过我们用win32编程需要它, 大到进程  模块 窗口 小到光标 图标,都要用句柄来引用.
句柄的定义只是在内存中存在,其数值不是每次都固定的,所以了解句柄的具体数值没意义.一般情况下句柄的数值是内存中的首地址. 离开了内存谈句柄是根本不可能的.
保护模式下的内存地址好象没"物理地址"这个说法啊,都是PE文件被加载到内存中分配的虚拟地址.

我也刚学没几天,也不太理解. 乱说的
2008-07-13 22:52
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
说白了,句柄就是数据结构。windows不愿意让你看到内在东西所以搞了个句柄,在linux 里就没有啊
2008-07-17 14:38
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
得分:0 
回复 5# missiyou 的帖子
妙啊!我也有此感觉,就是不知道其所以然。
其实,WIN32汇编中数据结构特别多,还层层嵌套呢,原来句柄就是它们的入口地址啊。
那ID,本质又是什么呢?
我很想弄明白。
2008-07-17 14:45
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
得分:0 
回复 6# ONEPROBLEM 的帖子
ID如 2#所说的。
2008-07-17 14:50
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
得分:0 
[bo][un]ONEPROBLEM[/un] 在 2008-7-17 14:45 的发言:[/bo]

妙啊!我也有此感觉,就是不知道其所以然。
其实,WIN32汇编中数据结构特别多,还层层嵌套呢,原来句柄就是它们的入口地址啊。
那ID,本质又是什么呢?
我很想弄明白。

它有一个句柄表,保存在程序开始地方。就像,int *p; p=~p;这样,这个值就变了,struct a{int a};struct a *p; 句柄表=~p;p就不能 p->a了。
id 有可能是句柄表前面的标号,还有特别定义的标号吧,呵呵。
2008-07-17 18:26
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
得分:0 
  还在想这个啊...

句柄是在WINDOWS系统里用的,一般是一个32位整数值,而不是一个"结构',系统通过句柄来标识 实例 窗口 菜单 输出设备 文件 ......等等,   句柄值不确定,这次运行是这个,那次运行是那个, 一般情况下是内存中该对象的首址, 这里只是讲"一般情况",而不是说一定,也不是跟楼上所讲高级语言中的那些数组了结构了什么的概念一样. 句柄值有可能是1 有可能是2,3...有些系统中,GET到的句柄值还是它所引用对象的字节数,...所以说过多的钻研句柄和句柄值是没意义的.况且句柄的含义本来也没有定义. 只要知道如何使用就行了.ID也一样.
2008-07-17 22:01
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
[bo][un]你们都要疼我哦[/un] 在 2008-7-17 22:01 的发言:[/bo]

  还在想这个啊...

句柄是在WINDOWS系统里用的,一般是一个32位整数值,而不是一个"结构',系统通过句柄来标识 实例 窗口 菜单 输出设备 文件 ......等等,   句柄值不确定,这次运行是这个,那次运行是那个, 一般 ...


解释的太好了 赞一个

句柄表的具体实现不需要掌握  可能就是 1h 2h 3h 这样的数

貌似在驱动里  就可以直接操作相应的内核对象 不用句柄了

不管怎么说 句柄还是很好用的 呵呵
2008-07-20 02:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-223760-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017357 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved