【问题标题】:How do I find out who called SendMessage?如何找出谁调用了 SendMessage?
【发布时间】:2012-05-10 12:46:25
【问题描述】:

我正在尝试调试我的 Windows 安装问题。细节并不特别重要,但我正在寻找以下问题的答案:

explorer.exe 收到 WM_SETTINGCHANGE 消息。在 WinDbg 中,我可以在适当的 WndProc 处中断。我如何知道谁发送了消息?那就是:有什么办法可以追溯到调用SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, ...)的进程?

【问题讨论】:

    标签: debugging winapi windbg


    【解决方案1】:

    Windows 消息是匿名的。除非消息定义了某种方式来识别发件人(这很容易被伪造),否则您的呼叫应用无法确定它们来自哪里

    【讨论】:

    • 调用进程阻塞,直到消息被传递。因此,必须有一个 RPC 机制在起作用。我知道有一种方法可以在跨进程 COM 调用中找到调用者。我想知道是否有办法对 Windows 消息做同样的事情。
    • ...我不是在问我的应用程序是否可以解决这个问题。我在问WinDbg是否可以解决。
    【解决方案2】:

    这篇博文可以帮助你进行 RPC 调试:http://kobyk.wordpress.com/2008/06/07/remote-procedure-call-debugging/

    您需要启用 RPC 状态收集:http://msdn.microsoft.com/en-us/library/ff542974.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2021-07-31
      • 2015-01-05
      • 2020-10-08
      相关资源
      最近更新 更多