用户对象
用户界面对象仅支持每个对象的一个句柄。 进程无法继承或复制用户对象的句柄。 一个会话中的进程不能引用另一个会话中的用户句柄。
每个会话的理论限制为 65,536 个用户句柄。 但是,每个会话可以打开的最大用户句柄数通常较低,因为它受可用内存的影响。 还有用户句柄的默认按进程限制。 若要更改此限制,请设置以下注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
此值可以设置为介于 200 和 18,000 之间的数字。
用户对象的句柄
用户对象的句柄对所有进程都是公共的。 也就是说,只要进程对对象具有安全访问权限,任何进程都可以使用用户对象句柄。
在下图中,应用程序创建一个窗口对象。 CreateWindow 函数创建窗口对象并返回对象句柄。
创建窗口对象后,应用程序可以使用窗口句柄显示或更改窗口。 该句柄在销毁窗口对象之前保持有效。
在下一个图中,应用程序销毁窗口对象。 DestroyWindow 函数从内存中删除窗口对象,使窗口句柄失效。
管理用户对象
下表列出了用户对象以及每个对象的创建者和销毁器函数。 创建者函数可以创建对象和对象句柄,或者只返回现有对象句柄。 销毁器函数从内存中删除对象,使对象句柄失效。