⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_21136.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:21136 发表者:猫 发表日期:2002-11-13 23:33:51
<br>主题:谁为解困?
<br>内容:自学一段时间的vc了,还有一些基础问题没搞清楚,比如说句柄,实例句柄,指针和句柄之间有什么关系?还有DWORD,UINT,WORD这些数据类型一般都用在哪些数据上.如能系统讲一讲,并附上一些浅显的例子,小弟感激不尽。。。。。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2002-11-14 00:37:30
<br>内容:我说说我知道的<BR>句柄大概可以理解成安全代替指针的一个东西。因为指针说指向的,是一个真实的内存地址,所以指针的使用不当,很容易造成系统崩溃。同时,因为windows是运行在保护模式下的操作系统,很多资源是处在核心态,就是说有的提供系统服务的代码在用户的程序中是不能直接调用的,所以如果你用指针去获取一块系统资源,或者是一个代码段(函数入口),那么无论是在被动安全性(防止误操作)还是在主动安全性(系统不允许直接调用)上来说,都是不足取的。所以,我们需要一个叫做句柄的东西来代替指针。<BR>如何代替呢?一般来说,系统管理的是一些资源,比如设备上下文,这些资源是许多程序共享的,因为指针的原因,我们不能直接通过指针来使用,而是要使用一种有利于windows管理的方法,就是给每一个资源在每次不同的分配上定义一个32位的值<BR>如何理解呢?1,系统资源有很多,比如设备上下文,进程,文件,管道等等,所以每个资源都要有不同的32位的值,这就是我说的“每一个资源”。2,同一个资源,可以分配给多个程序,比如一个屏幕上可以有两个窗口在绘画,所以就算把资源定下来了我们还是不能区分资源的不同使用。这就是我说的“每次不同的分配”。<BR>好,现在既然我们不是用指针而是用了句柄,系统就可以在内部维护一张表格,里面左边写句柄,右边写这个句柄对应的资源和那个程序在使用。这样,我们就不用直接跟内存和设备打交道了,我们要做什么,把句柄告诉系统,然后系统验证你这个句柄是否合法,是否让你使用。同时,就算你程序出错了,因为你访问的资源是句柄,要通过系统过滤,所以系统在对资源的处理上也有机会考察你程序的情况。这样你的程序访问资源也方便(申请一个句柄保存下来),系统管理也方便了<BR>这就是我对句柄的理解。都是我的个人看法,我也弄了很久才清楚<BR><BR>至于DWORD就是一个32位数据,他长度=eax,一般可以用来保存句柄或者是一个内存地址(指针值).WORD,UINT好像是16位,我也不大清楚,使用时我都是参考msdn.这些东西都是定义的数据长度,如何使用就看你自己了:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猫 回复日期:2002-11-14 00:56:58
<br>内容:先行谢过。百分送上~<BR>这么说,句柄就是为了安全考虑而设置成了指针的替代品,而通过句柄一样能做指针能做的事,对么?<BR>eax?是汇编里的寄存器么?后面的兄弟,如果能对第二个问题再讲的详细点,我再开一帖送分。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-11-14 08:32:46
<br>内容:应该可以从句柄得到指针,然后做相应的操作<BR><BR>eax就是在ASM中的寄存器
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:折翼之鹰 回复日期:2002-11-14 08:44:19
<br>内容:补充一点,对于xiongli写的那个系统句柄表,没这么简单的,对于可以在系统内进程间共享的资源,都会有引用计数,而每个进程对共享资源的打开和释放都会引起计数的改变。当计数为0时,系统负责释放资源。而对于进程内有效的资源,处理就简单些,如xiongli兄所述。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:猫 回复日期:2002-11-14 10:15:45
<br>内容:喔。。。。。。大概有些明白了,多谢上面两位。。。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -