Контроль утечек при выполнении Gdi функций

  • Автор темы klizardin
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

klizardin

Для контроля утечки GDI функций пишу модуль, который подставляет свои функции вместо стандартных из подключаемого модуля. Реализуется это дело путем перехвата API функций.

Проблема возникла в том, что я не могу перехватывать функции из MFC42.dll так как в нем не находиться секции ".idata", а именно в ней прописанны функции для импорта.
Я перехватываю часть функций, которые inline /*программа пишется на С++*/, но реализованные внутри MFC42.dll до них я не могу добраться.

Изночальная проблема: длл-ка падает под win98 при скролировании области отрисовки документа. Т.к. из-за сложности модуля, да и не родного происхождения (не я его писал, да и автор не все свое использовал) очень тяжелоо искать в коде что неверно. Легче попробовать автоматизированные средства. Bounds checker ничего не выдал. Беглый просмотр кода нашел один нюанс.

Код:
//что то вроде
...
CPen pen;
pen.CreatePen(...)
CPen* poldpen = pDC->SelectObject(&pen);
poldpen->DeleteObject();
...
//естественно далее в этом месте никакого SelectObject "вернуть обратно" не вызывается
//да и в дальнейшем коде сомнительно, что нечто подобное происходит

возможно существуют и другие подобные нюансы. На этот нюанс BoundsChecker ни как не реагировал.

Как найти неправильное использование GDI объектов? Есть ли утилиты для этого преднозначенные?
Если самому писать, то как быть с дллками типа MFC42.dll где нет секции ".idata"? Как они импортируют функции из других модулей?
 
P

proc

Если проблема еще актуальна, скинь часть кода, где отваливается. Попробую помочь.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!