来源  http://www.0xaa55.com/forum.php?mod=viewthread&tid=1401&extra=page%3D1


 windows里常用句柄操作资源,而对应的对象由操作系统维护,

对象分:用户对象、GDI对象和内核对象;
用户对象用于windows管理,GDI对象用于绘图,内核对象用于内存、进程和IPC,


Windows核心编程写道识别内核对象的方法是看有没有SECURITY_DESCRIPTOR参数


    用户对象的资源包括:快捷键、光标、标记、dde转换、钩子、图标、菜单、窗口等
    GDI对象包括:位图、画刷、画笔、设备上下文、图元、字体、调色板、区域等
    内核对象包括:访问令牌、设备、控制台、桌面、事件、文件、文件映射、堆、作业、油槽、模块、互斥体、管道、信号量、socket、线程、计时器等



用户对象,每个对象只能有一个句柄,不允许进程间复制和继承句柄,一个session的进程不能引用另一个session进程的句柄。每个session最多用户句柄有上限(200,18000),

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota




GDI对象,每个对象只能有一个句柄,GDI对象的句柄对于进程是私有的,只有创建对象的进程可以使用对象句柄,句柄数最多用户句柄有上限(256,16384),
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota

内核对象句柄是进程所有的,也就是说进程要么打开已有对象,要么创建对象以获取内核对象句柄,该句柄可以复制和继承,每个进程句柄上限是2^24,然而句柄是存在分页内存中的,因此实际句柄数与可用内存有关。








Windows中的对象的更多相关文章

  1. windows系统的对象管理

    windows中的对象和高级编程语言中所说的对象还欧区别,准确来讲,windows中的对象其实指的是一种数据结构并且是一种带着“对象头(object head)” 的数据结构!  所以windows中 ...

  2. Windows中句柄和ID的区别

    写在前面:这里介绍句柄 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚.查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种是以 ...

  3. windows中根据进程PID查找进程对象过程深入分析

    这里windows和Linxu系列的PID 管理方式有所不同,windows中进程的PID和句柄没有本质区别,根据句柄索引对象和根据PID或者TID查找进程或者线程的步骤也是一样的.   句柄是针对进 ...

  4. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  5. C#[Serializable]在C#中的作用-NET 中的对象序列化

    为什么要使用序列化?最重要的两个原因是:将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本:按值将对象从一个应用程序域发送至另一个应用程序域.例如,序列化可用于在 ASP.NET 中保 ...

  6. 【笨嘴拙舌WINDOWS】GDI对象之位图

    GDI对象在windows中可以描述成为一次绘画操作时可使用的抽象工具.包括(画笔.画刷.字体.区域.调色板.位图等) GDI对象里的对象概念和在编程领域中面向对象编程的对象概念是不一样的! GDI对 ...

  7. Linux与Windows中动态链接库的分析与对比

    摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...

  8. [转]Windows中的句柄(handle)

    1.句柄是什么?   在windows中,句柄是和对象一一对应的32位无符号整数值.对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象.2.为什么我们需要句柄?   更准确地说,是windows需要 ...

  9. Windows中的句柄

    (一)句柄 在程序设计中,句柄(handle)是一种特殊的智能指针.当一个应用程序要引用其他系统(如数据库.操作系统)所管理的内存块或对象时,就要使用句柄. 句柄与普通指针的区别在于,指针包含的是引用 ...

随机推荐

  1. hibou 主界面自己侧滑的定义

    要打滑View参加UIPanGestureRecognizer #pragma mark 手势识别器回调方法 - (void)dragView:(UIPanGestureRecognizer *)ge ...

  2. 【Android Studio】studio学习系列(一) 从eclipse导入project

    Android google官方出的IDE android studio 一直都在走bate版本号,尽管如此,总认为它比ADT更加靠谱.所以我也想用studio来开发滴.可项目一直都是eclipse的 ...

  3. windows不能在本地计算机启动SQL Server(MSSQLSERVER)

    windows不能在本地计算机启动sql server 在登录数据库的时候,发现数据库不能登录,提示[无法连接到实例],很明显这是因为数据库服务没有启动导致的,我们打开[服务]启动相应的SQL数据库服 ...

  4. L9-1-安装Apache

    一.安装Apache服务器: 安装apr [root@OCP soft]# tar -zxf apr-1.5.1.tar.gz [root@OCP apr-1.5.1]# ./configure -- ...

  5. 几个Python oj的网站

    http://www.rqnoj.cn/ http://www.pythontip.com/

  6. android 转帖留链接

    Android开发:用Drawable XML绘制带阴影效果的圆形按钮          http://evis.me/2013/05/android-dev-render-button-with-s ...

  7. php or || 和 and &&

    追溯代码时遇到这个坑,一直是略有懵懂,那就填了这个坑. 1 if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = BASEPATH.' ...

  8. LinkList的实现

    public class MyLinkedList<AnyType> implements Iterable<AnyType> { @Override public Itera ...

  9. Memcache缓存系统原理

    在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法.其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率. 除了能够提高服务的运行效 ...

  10. android apk 导出(签名) is not translated in xx 代码混淆 反编译

    apk导出遇到问题 解决方式如下 1.导出步骤第一步 2.提示错误 3.解决 其余步骤参见: 代码混淆和数字签名(现在版本混淆) http://blog.csdn.net/moruna/article ...