Вы можете отследить утечки дескриптора окна, перехватив Create / DestroyWindow, а затем отследить переданный дескриптор. Таким образом, вы можете легко с помощью ETW отследить график в WPA, где лишние дескрипторы, которые еще не удалены, остаются вне.
См. http://geekswithblogs.net/akraus1/archive/2016/01/30/172079.aspx
С моим форком EasyHook он работает также для x64 на Win 8 и более поздних версиях.
Ниже приведено изображение, которое было создано с помощью ETWStackwalk.exe, который является частью моей вилки EasyHook. В WPA вы видите все открытые и закрытые окна, а также то, какие окна все еще открыты, проверив в столбце AllocSize значения> 0.
Затем отфильтруйте события, у которых по-прежнему открыт дескриптор, и вы получите стеки вызовов там, где они были распределены, но до сих пор не освобождены.
Если вам нужны кисти или шрифты, вам необходимо расширить инструмент для методов, которые, как вы подозреваете, ответственны за утечку. Представленный подход способен решить любую утечку ресурсов, если вы знаете, какие методы могут создать утечку, и вы можете перехватить распределение ресурсов и бесплатные вызовы.