谁能给我介绍下句柄的意思。。

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:52:39
获取窗口的句柄是怎么获取 的。。还有获取了句柄。返回值是什么。。
只有调用api函数才能获取句柄吗?
api函数。。都是哪些dll文件的。。
api函数原理是什么。。。

能讲详细点就讲详细点啊我会追加高分的 谢谢。。。

一般地,窗口的句柄是通过Windows提供给你的编程接口,也就是API来获取的,句柄的本质就是一个对Windows有意义,对应用程序来说却毫无意义的一串数值。你可以把句柄看作是引用“由Windows内核管理的、应用程序无法直接访问的”内部数据结构的索引。
在应用层上,我们只能通过Windows提供给你的接口来获取句柄,我们是无权访问Windows内部的数据结构的,也就是说,句柄只是通过API来获取(直接或间接的)。
Windows提供了大量的API,分布在N个Dll库里,分别实现不同的功能,其中最重要的三个库是Kernel32.dll、Gdi32.dll、和User32.dll,他们提供了最基本的API函数,如Kernel32.dll提供了系统操作,如打开进程,创建文件等,Gdi32.dll提供了图形操作的API函数,如GetDC,TextOut等,而User32.dll是每个窗口程序必不可少的,因为几乎所有的窗口操作API都在那里。
Windows是分层设计的,层与层之间互相隔开,上一层使用下一层提供的功能,向更高一层提供服务。API是Windows提供给程序员的用户层的编程接口,当程序调用API时,API会转而调用它下一层的接口,并最终进入核心层来实现程序员的操作,而这些核心层的东东,应用程序是不能访问的,只能通过用户层提供的API来间接访问。
我所说的,仅仅是针对Ring3级别的“应用程序”,Ring0级别的,如驱动等,他们可以直接访问核心的数据结构等,可以不用API。

我说一下我的看法
仅供参考
句柄分为伪句柄和内核句柄
窗口的句柄即是伪句柄
而文件句柄即是内核句柄
句柄其实是一个索引
GUI窗口系统管理所有进程的主窗口与子窗口
这个系统中有一张表而句柄其实是一个索引
指向表中具体一项,这一项对应一个窗口
关于他的窗口名,窗口类名,窗口过程,窗口属性等
而关于内核句柄则在进程的结构体EPROCESS有所体现
EPROCESS就有一个关于进程所有打开文件句柄的域
你可以通过NTDLL.DLL的导出函数NtQueryObject来获取句柄所代表的Windows实体