关于句柄和对象

【勇芳软件工作室】汉化HomePreviousNext

Windows使用对象和句柄来管理对系统资源的访问有两个主要原因。首先,使用对象确保开发人员不会将代码专门写入低层次的内部结构。只要原始调用约定得到维护,Microsoft就可以添加或更改操作系统的功能。当后续版本的操作系统被释放时,应用程序将获得这种新功能,很少或没有额外的开发。

第二,使用对象使开发人员能够利用Win32的安全性。每个对象都有自己的访问控制列表(ACL),用于指定进程可以对对象执行的操作的类型。每次应用程序尝试创建对象的句柄时,操作系统将检查对象的ACL。有关安全性的更多信息,请参阅安全.

对于大多数对象,Win32 API提供了创建对象的功能,创建对象句柄,关闭对象句柄并销毁对象。这些任务可能会被组合或不必要,这取决于对象的类型和情况。例如,应用程序可以创建一个事件对象。其他应用程序可以打开该事件,并且每个应用程序将具有相同事件对象的唯一句柄。在这种情况下,随着应用程序使用对象完成,每个都关闭其句柄。当事件对象没有打开的句柄时,操作系统将从内存中删除该对象。

相比之下,应用程序可以获得现有的窗口对象句柄。在这种情况下,当不再需要窗口对象时,应用程序必须从内存中删除对象,这会使窗口句柄无效。

当进程终止时,系统会自动关闭句柄并删除进程创建的对象。但是,当线程终止时,系统通常不会关闭句柄或删除对象。唯一的例外是在创建线程终止时被删除的窗口,钩子,窗口位置和动态数据交换(DDE)会话对象。

手柄和物体消耗记忆。因此,为了保持系统性能,应用程序应该在不再需要时立即关闭句柄并删除对象。不执行此操作的应用程序可能由于页面文件的过度使用而导致操作系统的运行减慢。

Windows提供三类对象:用户,图形设备接口(GDI)和内核,如下表所示。系统使用用户对象来支持窗口管理,GDI对象支持图形,内核对象支持内存管理,流程执行和进程间通信(IPC)。有关创建和使用特定对象的信息,请参阅相关概述。

Windows用户对象

用户对象概观
加速器表键盘加速器
插入符号en插入符号
光标游标
动态数据交换对话动态数据交换管理库
桌面安全
图标图标
菜单菜单
窗口视窗
窗口位置视窗
窗台视窗

Windows GDI对象

GDI对象概观
位图位图
字形字体和文字
调色板颜色
钢笔
延长笔
地区地区
设备上下文设备上下文
内存设备上下文设备上下文
图元文件图元文件
图元文件设备上下文图元文件
增强图元文件图元文件
增强型图元文件设备上下文图元文件

Windows内核对象

内核对象概观
处理进程和线程
线进程和线程
文件
文件映射文件映射
事件同步
信号同步
互斥同步
管(命名和匿名)管道
邮筒邮筒
通讯设备通讯
内存管理
动态链接库
更新资源资源
查找文件
事件日志事件记录
更改通知en
代币安全
服务对象打印和打印后台打印程序
LZ文件数据解压缩库