对象接口
Windows 提供执行以下任务的函数:
- 创建对象
- 获取对象句柄
- 获取有关对象的信息
- 设置有关对象的信息
- 关闭对象句柄
- 销毁对象
每个对象不需要其中一些任务。 其中一些任务针对某些对象进行了组合。 例如,应用程序可以创建事件对象。 其他应用程序可以打开事件以获取此事件对象的唯一句柄。 每个应用程序都使用该事件后,它会将其句柄关闭到对象。 当事件对象没有剩余的打开句柄时,系统将销毁事件对象。 相比之下,应用程序可以获取现有窗口对象的句柄。 不再需要窗口对象时,应用程序必须销毁使窗口句柄失效的对象。
有时,在关闭所有对象句柄后,对象将保留在内存中。 例如,线程可以创建事件对象并等待事件句柄。 当线程正在等待时,另一个线程可能会关闭相同的事件对象句柄。 事件对象保留在内存中,没有任何事件对象句柄,直到事件对象设置为信号状态并完成等待作。 此时,系统会从内存中删除对象。
句柄和对象占用内存。 因此,为了保持系统性能,应尽快关闭句柄并删除对象,因为不再需要这些对象。 如果不这样做,应用程序可能会因为过度使用分页文件而损害系统性能。
进程终止时,系统会自动关闭句柄并删除进程创建的对象。 但是,当线程终止时,系统通常不会关闭句柄或删除对象。 唯一的例外是窗口、挂钩、窗口位置和动态数据交换(DDE)对话对象:这些对象在创建线程终止时被销毁。