一个进程的 GDI 泄漏会影响其他进程吗?

Can GDI leaks from one process affect other processes?

我们的 GDI 资源泄漏会不时导致 "Win32Exception Not enough storage is available to process this command" (related question)。

我们的应用程序由一个 Word 插件和一个 C# 应用程序组成。 Word 插件中的泄漏是否会从 C# 应用程序中删除资源?我们已经看到应用程序在出现一些不相关的插件问题后崩溃。

换句话说,GDI 资源是专门为每个进程分配的还是以某种方式共享的?

确切数量取决于 windows 的版本,但通常是每个会话 65,536 的理论限制。实际上,这个数字更低(例如 Windows 2000 年的 16,384)。

每个进程也有大约 10,000 个句柄的限制,尽管这可以通过注册表设置 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota 全局更改。虽然此设置不应由应用程序更改,因为它是计算机的全局设置。

MSDN - GDI Objects

Old New Thing - Why is the limit of window handles per process 10,000?