ooptimum
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Народ, перестаньте спорить. Я довольно долго занимался системным программитрованием под Win32 и знаю, что исчерпать GDI ресурсы не так уж и затруднительно, несмотря на заверения M$ о том, что GDI ресурсы в NT и выше не лимитированы. Вот маленькая табличка, содержащая информацию относительно количества GDI-хэндлов (handles), которые можно создать: Operating System | Maximum per system | Default Limit per process | Registry entry† (DWORD) | Windows NT | 16384 (0x4000) | 12288 (0x3000) | ProcessHandleQuota | Windows 2000 | 16384 (0x4000) | 10000 (0x2710) | GDIProcessHandleQuota | † в ветке HKLM/Software/Microsoft/Windows NT/CurrentVersion/Windows/ Так что увеличить количество ресурсов нельзя. Можно лишь попытатся защититься от не в меру "прожорливых" приложений. Кстати, это один из способов эффективно заблокировать действия администратора при проведении аттаки на систему -- захватить все GDI-хэндлы и тем самым лишить его возможность работать в системе, т.к. он не сможет открыть ни одного окна. Для того, чтобы посмотреть, какие процессы наиболее активно расходуют GDI-хэндлы, можно открыть Task Manager, перейти на закладку Processes и в меню View выбрать пункт Select Columns... В появившемся окне отметить пункт GDI Objects и нажать Ok. После этого можно будет отследить распределение GDI-хэндлов по процессам. Также можно использовать альтернативные утилиты, такие как Handle или Process Explorer от SysInternals, а также утилиты, перечисленные в статье на MSDN'е, посвященной борьбе с утечками ресурсов в GDI коде.
| Всего записей: 2898 | Зарегистр. 30-05-2002 | Отправлено: 21:37 22-03-2004 | Исправлено: ooptimum, 23:19 22-03-2004 |
|