Как я могу узнать, сколько объектов GDI разрешено создавать моему процессу? - PullRequest
1 голос
/ 06 октября 2010

Есть раздел реестра, в котором я могу проверить (и установить) текущую установленную квоту объекта GDI для процессов. Однако, если пользователь изменяет этот раздел реестра, это значение остается старым до перезагрузки. В моей программе мне нужно знать, есть ли способ программно определить, сколько еще объектов GDI я могу создать. Есть ли API для получения информации GDI для текущего процесса? Как насчет системного уровня?

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Всегда трудно доказать определенное отсутствие API, но это 95% бездействия.Многие параметры системы настраиваются через реестр без API для последующей настройки.

Типичный ответ Раймонда Чена на такие вопросы: «Если вы хотите знать, значит, вы делаете что-то не так».Это применимо здесь, квота по умолчанию в 10 000 маркеров огромна.

1 голос
/ 09 октября 2010

Если вы хотите найти текущую квоту, которая имеет значение для вас, создавайте объекты GDI до тех пор, пока не произойдет сбой. Запишите это число. Затем уничтожьте их всех.

Если вы хотите делать это регулярно, чтобы получить точное число, вы можете сделать это. Хотя, вероятно, это будет довольно дорого.

0 голосов
/ 09 октября 2010

Поскольку Ганс уже упоминал Рэймонда, мы должны сыграть в его игру «Представь, если бы это было правдой». Если бы этот API - GetGDIObjectLimit или что-то еще - существовал, что бы он вернул? Если предел количества объектов составляет 10000, то вы ожидаете, что он вернет это право? Так что же происходит, когда в системе недостаточно памяти? API сообщает вам значение, которое не имеет реального значения. Если вы приближаетесь к 10000 объектам GDI, вы делаете что-то не так, и вам следует сосредоточиться на исправлении этого.

...