元始天尊 发表于 2015-7-4 20:17:10

windows中的对象

来源:https://msdn.microsoft.com/en-us/library/ms724515(v=vs.85).aspx
    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

https://i-msdn.sec.s-msft.com/dynimg/IC154943.png
https://i-msdn.sec.s-msft.com/dynimg/IC499.png

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

内核对象句柄是进程所有的,也就是说进程要么打开已有对象,要么创建对象以获取内核对象句柄,该句柄可以复制和继承,每个进程句柄上限是2^24,然而句柄是存在分页内存中的,因此实际句柄数与可用内存有关。
https://i-msdn.sec.s-msft.com/dynimg/IC167904.png
https://i-msdn.sec.s-msft.com/dynimg/IC61704.png
https://i-msdn.sec.s-msft.com/dynimg/IC124303.png
https://i-msdn.sec.s-msft.com/dynimg/IC69212.png
https://i-msdn.sec.s-msft.com/dynimg/IC18530.png
页: [1]
查看完整版本: windows中的对象