Здравствуйте, LimyKurn, Вы писали:
LK>В диспетчере задач нету даже потребления ОЗУ процессом System. Причем, ЦП есть, а ОЗУ нет. То ли это от разгильдяйства, то ли это такой маркетинг (вроде автомобиля: "мощность двигателя — достаточная"), но может сыграть злую шутку с новичком, ну и мешает проверять драйвер на утечки
Там есть показатели использования Paged и NonPaged пулов:
| Скрытый текст |
| |
| |
LK>Хочется видеть все буферы памяти, которые выделяет и очищает драйвер.
LK>Можно просто содержимое буферов видеть — но не так, что всю память системного процесса, а именно те, которые принадлежат драйверу.
Каждое выделение памяти вызовом
ExAllocatePoolWithTag раскрашивается Tag'ом. Стоит придумать достаточно уникальный для своего драйвера и проблема решена.
LK>Была идея сделать обертки для всех функций, который делают Allocate и Free, и считать, но идея неважная — усложнение, тормоза и т.п. Непонятно зачем изобретать велосипед, если оно уже должно быть.
LK>Отладчик использую WinDbg — наверно там как-то можно?
Да, команда
!poolfind
LK>Driver Verifier смотрел — но с ним еще разбираться... и не знаю, есть ли в нем это...
При настроенном Driver Verifier при выгрузке драйвера из-за утекшой памяти будет принудительный BSOD. В этот момент (или просто в момент работы системы) настроенный Verifier позволяет видеть call-stack'и выделений памяти —
Use the !verifier 3 extension command to find out about the pool allocations.