`
- 浏览:
1489425 次
- 性别:
- 来自:
杭州
-
系统使用对象和句柄来控制对于系统资源(文件、线程等)的访问主要出于两个目的:
1、只要保持对象原有接口不变,这样Microsoft可以很好的更新系统功能。当系统发布时,原先使用对象的应用程序只要进行很少修改或者不用修改就可以照样运行。
2、使用对象将有利于使用Windows NT 。每个对象都有自己的反问控制列表(ACL)。访问控制列表指定了进程可以对相应对象所进行的操作。每次应用程序创建对象的句柄时,系统会检查对象的ACL。
对象管理器:
一
个对象包含一个标准头和特定于对象类型的属性。因为所有的对象有着相同的结构,所以Windows内部使用一个“对象管理器”来管理所有的对象。对象头包
含对象名(其它进程可以用对象名来引用该对象)、安全表述表(对象管理器用来控制进程对于系统资源的访问)。对象管理器实现如下几个功能:
1、创建对象
2、对于进程使用对象的权限进行验证
3、创建对象并且返回给调用函数
4、对于资源配额进行维护
5、创建复制句柄(duplicate handle)
6、关闭对象的句柄
对象接口:
Windows对于如下任务提供了相应的操作函数:
1、创建一个对象
2、获取一个对象句柄
3、获取对象的信息
4、设置对象的信息
5、关闭对象句柄
6、清除对象
对象和句柄将消耗内存。应此,为了保持系统的性能,只要对象不再需要时,你必须关闭句柄并且删除对象。如果你不这样做,系统将由于过多使用分页,将大大影响其性能。
注意:当进程结束时,系统将自动关闭句柄并且删除由该进程所创建的对象。然而,当线程结束时,通常系统不会关闭句柄或者删除对象。除了以下对象例外:window、hook、window position和DDE 会话对象。这些对象当创建线程结束时才被清除。
句柄数的局限:
有些类型的句柄在同一时间只允许存在一个句柄。当应用程序创建对象时,系统提供句柄;当应用程序删除对象时,系统将使句柄失效(invalidate)。另外一些对象类型允许一个对象可以有多个句柄。在对象的最后一个句柄被关闭后,OS会自动从内存中移除对象。
在系统中允许的打开句柄的总数只受到可用内存大小的限制。然,有些对象类型在一个会话或者一个进程中对句柄数进行限制。
句柄的继承:
子进程能够从父进程继承句柄。被继承的句柄只有在子进程的上下文环境中有效。为了让子进程能够从它的父进程那里继承已打开的句柄,必须如下操作:
1、在创建句柄时,将SECURITY_ATTRIBUTES结构的成员bInheritHandle设置成TRUE
2、用CreateProcess函数创建子进程时,将bInheritHandle设置成TRUE
DuplicateHandle函数可以复制句柄,复制的句柄可以在当前进程或者在另一个进程中使用。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持...
查看句柄,获取HANDLE,用于windows编程获取某窗口句柄
国外的软件,获取句柄.使用编程或按键精灵的时候会用到.
此小程序《Root Windows》可以坐标取得窗口的句柄,然后在树状控件里显示窗口的文本,句柄号,类名,父句柄,并且可以输出窗口的句柄到文本文件。相对《spy++》来说,可查看更多详细资料。取得登陆窗口的好工具。
windows进程句柄权限控制
开发或调试辅助工具,用于分析Windows下所有运行的应用程序,可以查找分析句柄及消息
初识Windows编程 消息 面向对象 窗口 句柄 进程
在此数据结构中少数成员如安全描述符和使用计数是所有对象都有的,但其他大多数成员都是不同类型的对象特有的。内核对象的数据结构只能由操作系统提供的API访问,应用程序在内存中不能访问。调用创建内核对象的函数...
作为网络入侵领域的一种新兴技术,Rootkit 能隐藏入侵痕迹、...历内核句柄表,得到系统中运行的所有进程,再与调用API 得到的进程列表对比,发现Rootkit 隐藏的进程。实验证明,该 方法对于Rootkit 具有良好的检测效果
windows 编程中MFC 句柄的理解,形象的说明了句柄的作用
Windows应用程序中存在许多对象,例如选单、窗口、图标、内存对象、位图、刷子、设备对象和程序实例等,在Windows中,对象使用句柄进行标识,这样,通过使用一个句柄,应用程序可以访问一个对象。
获得windows指定窗口的窗口句柄 得到后可对其进一步控制
枚举内核对象句柄-易语言
windows下qt获取所有桌面窗口、类名和标题,辅助开发的小工具 qDebug()窗口句柄:"窗口类名:"窗口标题:";
windows获取句柄
和C语言中的main()函数一样,Windows程序是从WinMain()函数开始和结束的.WinMain()函数是在WINBASE.H中定义的,其原形如下: int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ...
使用OpenGLES基于Windows的窗口句柄进行渲染YUV序列,内附实例可直接运行。 包括YUV444P和YUV420P
SPY++直接运行版(windows句柄获取工具)
C++中句柄和指针的区别,从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆...
《Root Windows窗口句柄》可以坐标选取窗口,然后按Root可以解析出各个子窗口的文本内容,句柄号,类名和父窗口,在树状控件里显示。