Контроль утечек при выполнении 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"? Как они импортируют функции из других модулей?
 
Если проблема еще актуальна, скинь часть кода, где отваливается. Попробую помочь.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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