您当前的位置: 首页 >  windows

顺其自然~

暂无认证

  • 3浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Windows中的对象

顺其自然~ 发布时间:2020-11-03 09:28:31 ,浏览量:3

windows里常用句柄操作资源,而对应的对象由操作系统维护,
 
对象分为: 用户对象(GUI对象)、GDI对象和内核对象 ; 用户对象用于windows管理 , GDI对象用于绘图 , 内核对象用于内存、进程和IPC ,
 
Windows核心编程写道识别内核对象的方法是看有没有SECURITY_DESCRIPTOR参数。内核对象是不属于进程的,是属于Windows内核的。 进程只有一个内核对象句柄表,用来存放所有的内核对象句柄。所以,多个进程可以同时使用一个内核对象-- 只要有handle即可。
 
用户对象的资源包括:快捷键、光标、标记、dde转换、钩子、图标、 菜单、窗口 等GDI对象包括:位图、画刷、画笔、设备上下文、图元、字体、调色板、区域等内核对象包括:访问令牌、设备、控制台、桌面、事件、文件、文件映射、堆、作业、邮槽、模块、互斥体、管道、信号量、socket、线程、计时器等
 
其中GUI和GDI对象一般只能单线程访问,属于线程级的对象,多线程操作或访问这些对象会引起一些问题,当然这些对象也就不需要安全机制来控制了
 
用户对象,每个对象只能有一个句柄,不允许进程间复制和继承句柄,一个session的进程不能引用另一个session进程的句柄。每个session最多用户句柄有上限(200,18000),HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuotaGDI对象,每个对象只能有一个句柄,GDI对象的句柄对于进程是私有的,只有创建对象的进程可以使用对象句柄,句柄数最多用户句柄有上限(256,16384),HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota内核对象句柄是进程所有的,也就是说进程要么打开已有对象,要么创建对象以获取内核对象句柄,该句柄可以复制和继承,每个进程句柄上限是2^24,然而句柄是存在分页内存中的,因此实际句柄数与可用内存有关。内核对象的数据结构只能被内核访问,而 应用程序无法在内存中找到这些数据结构并改变它们的内容。进程共享这些内和对象,Windows通过引用计数的方式来保证内和对象的构建和销毁。与其他两种对象不同的是,当不再使用内和对象时,需调用CloseHandle方法来销毁内核对象。
 
 
关注
打赏
1662339380
查看更多评论
立即登录/注册

微信扫码登录

0.0412s