来源 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,然而句柄是存在分页内存中的,因此实际句柄数与可用内存有关。