0

我需要找到影响 Windows API 的内存损坏错误。基本上,程序运行一段时间后,CreateWindowEx函数返回NULL句柄并GetLastError()返回1407,意思是“找不到窗口类”。我检查了lpClassName参数,没有问题,并且该类已经注册。事实上,程序正常创建了该类的多个窗口,然后突然CreateWindowEx拒绝创建新窗口并报错1407。这个程序只有一个线程,我们确定UnregisterClass问题窗口类注册后没有调用.

我们怀疑我们的程序正在破坏某些USER32或其他 Windows 数据结构。但是使用Application VerifierVisual Leak Detector for Visual C++运行它,没有发现泄漏或内存损坏。资源使用率也很低,窗口句柄的数量永远不会超过 2k,提交的内存永远不会超过 50mb。

这让我想到了这个问题的标题:是否有一些 Windows API 或 Windows 配置选项可以按需或连续检查给定进程的 Windows 数据结构的状态?我已经在使用带有许多启用检查的应用程序验证程序,但它根本没有发现任何错误。

4

1 回答 1

0

我做了一个 hack,在调用失败后,我使用完全相同的参数执行了对 CreateWindowEx 的新调用。令我惊讶的是,第二次调用成功了!也许这与一些时间问题有关。

于 2013-03-03T18:22:17.877 回答