您现在的位置: IT专家网 > WinSystem子站 > 技巧
XP两种工具在代码中检测并堵塞 GDI 泄漏
Windows 需要一种不太相同的 GDI 泄漏方法,他构建并说明了两种工具,这两种工具旨在检测并消除在 Windows XP、Windows 2000 和 Windows NT 上运行的应用程序中的 GDI 泄漏。
摘要
在以前的一篇文章中,作者设计了一种简单的方法来检测图形设备接口 (GDI) 对象,这些对象并未由 Windows 9x 平台上基于 Win32 的应用程序正确地进行发布。因为有些更新版本的 Windows 需要一种不太相同的 GDI 泄漏方法,作者已经更新了针对那些操作系统的方法。他构建并说明了两种工具,这两种工具旨在检测并消除在 Windows XP、Windows 2000 和 Windows NT 上运行的应用程序中的 GDI 泄漏。
在 Windows 95、Windows 98 和 Windows Me 中,图形设备接口 (GDI) 句柄是一个 16 位的值,任何应用程序都可以使用它来调用 GDI API 的函数。在 2001 年 3 月一期的 MSDN® Magazine 中,我讲述了如何利用这些平台的 16 位特性来构建 GDIUsage,这是一种所有应用程序都可使用的列出、比较并显示 GDI 对象的工具(参见“Resource Leaks:Detecting, Locating, and Repairing Your Leaky GDI Code”)。本文将说明如何编写用于 Windows XP 的同种类型的工具。我这里将要使用的方法同样很好地适用于 Windows 2000 和 Windows NT® 4.0,但出于本文的目的,我将使用 Windows XP 来表示所有这三种平台。

图 1 Windows 2000 中 GDI 的使用
本文说明了 Windows 9x 和 Windows XP 平台的不同,提出了在工具的实现过程中产生问题的解决方案,您可以在图 1 中看到该工具。我将解释如何利用代码插入机制来确定某个进程的 GDI 资源消耗情况,以及如何修补进程或 DLL,使其在创建 GDI 对象时得到通知。接下来,我将说明如何编写 Win32® 调试器来驱动某一进程,如何让该进程和调试器彼此之间进行通信,以及如何实现调用堆栈管理器来提供有关 GDI 对象资源分配的额外信息。
- 本文关键词:
- API
- IT技术
- Windows
- Windows XP
- 操作系统

