对象接口

Windows 提供执行以下任务的函数:

  • 创建对象
  • 获取对象句柄
  • 获取有关 对象的信息
  • 设置有关对象的信息
  • 关闭对象句柄
  • 销毁对象

其中一些任务并非每个对象都是必需的。 其中一些任务是针对某些对象组合完成的。 例如,应用程序可以创建事件对象。 其他应用程序可以打开 事件以获取此事件对象的唯一句柄。 当每个应用程序使用 完 事件时,它会将其句柄关闭到 对象。 当事件对象没有剩余的打开句柄时,系统会销毁事件对象。 相比之下,应用程序可以获取现有窗口对象的句柄。 当不再需要窗口对象时,应用程序必须销毁 对象,这会使窗口句柄失效。

有时,在关闭所有对象句柄后,对象仍保留在内存中。 例如,线程可以创建事件对象并等待事件句柄。 当线程正在等待时,另一个线程可能会关闭同一个事件对象句柄。 事件对象保留在内存中,没有任何事件对象句柄,直到事件对象设置为信号状态并且等待操作完成。 此时,系统会从内存中删除 对象。

句柄和对象消耗内存。 因此,若要保持系统性能,应关闭句柄,并在不再需要对象时立即将其删除。 如果不这样做,应用程序可能会由于过度使用分页文件而损害系统性能。

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