代码之家  ›  专栏  ›  技术社区  ›  Dai

如何在Windows7上跟踪Win32窗口消息?

  •  0
  • Dai  · 技术社区  · 2 年前

    最近我一直在使用ETW跟踪Win32窗口消息( logman , xperf ,WPA等),这是相对简单的,因为 Microsoft-Windows-Win32k 提供程序导出的ETW事件 SendMessage , TranslateMessage , DispatchMessage

    …但今天我需要在Windows 7 SP1计算机上执行类似的跟踪,令我惊讶的是 微软-Windows-Win32k 提供者 is very anemic -它只暴露较粗略级别的事件,并报告窗口消息处理中的错误(例如。 UIPIMsgError ),但不是窗口消息本身。

    经过一些快速的研究,显然 微软-Windows-Win32k 直到 Windows 10's first release in 2015 ,这意味着在Windows 8.1、Windows 7、Vista或XP中无法使用ETW捕获这些信息。

    ……但收集这些数据对于许多类型的调试和故障排除任务都至关重要。对于琐碎或较小的故障排除情况,我们有Spy++,它报告任何其他窗口接收到的所有窗口消息(我已经很熟悉了 with how Spy++ works 内部),但这使得Spy++不适合对窗口消息进行大规模的拉网式跟踪,更不用说Spy++也没有用高精度的时间戳给窗口消息加时间戳了。


    所以 在Windows 10之前,性能工程师或故障排除人员是如何进行因果关系分析的?

    0 回复  |  直到 2 年前
    推荐文章