如何找出允许我的进程创建多少个GDI对象?

时间:2010-10-06 19:43:22

标签: windows winapi operating-system gdi

有一个注册表项,我可以检查(和设置)当前为进程设置的GDI对象配额。但是,如果用户更改了该注册表项,则该值将保持旧值,直到重新启动为止。在我的程序中,我需要知道是否有办法以编程方式确定我可以创建多少GDI对象。是否有用于获取当前流程的GDI信息的API?在系统级别呢?

3 个答案:

答案 0 :(得分:3)

总是难以证明API的明确缺失,但这个是95%禁止。许多系统设置都是通过注册表配置的,没有API可以在之后进行调整。

Raymond Chen对这类问题的典型回应是“如果你想知道那么你做错了什么”。它适用于此处,10,000个句柄的默认配额是巨大的。

答案 1 :(得分:1)

如果要查找对您而言重要的当前配额,请创建GDI对象,直到失败为止。记录那个号码。然后,销毁所有这些。

如果您想定期这样做以获得准确的数字,您可以这样做。它可能会相当昂贵。

答案 2 :(得分:-1)

由于汉斯已经提到雷蒙德,我们应该发挥他的“想象一下,如果这是真的”游戏。如果这个API - GetGDIObjectLimit或其他 - 存在,它将返回什么?如果对象计数限制为10000,那么您希望它返回该权限吗?那么当系统内存不足时会发生什么? API会告诉您一个没有实际意义的值。如果你接近10000个GDI对象,你做错了什么,你应该集中精力解决这个问题。