2012-05-10 11 views
5

Ich versuche ein Problem mit meiner Windows-Installation zu debuggen. Die Details sind nicht besonders wichtig, aber ich suche nach der Antwort auf die folgende Frage:Wie finde ich heraus, wer SendMessage angerufen hat?

explorer.exe empfängt eine WM_SETTINGCHANGE Nachricht. In WinDbg kann ich beim entsprechenden WndProc abbrechen. Wie finde ich heraus, wer die Nachricht gesendet hat? Das heißt: Gibt es eine Möglichkeit, dies auf den Prozess zurückzuverfolgen, der SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, ...) genannt wurde?

Antwort

1

Windows-Nachrichten sind anonym. Ihr Aufruf App hat keine Möglichkeit, zu bestimmen, woher sie kommen, wenn die Nachricht definiert eine Möglichkeit, den Absender zu identifizieren (die leicht gefälscht wäre)

+0

Der aufrufende Prozess blockiert, bis die Nachricht zugestellt wird. Es muss daher ein RPC-Mechanismus im Spiel sein. Ich weiß, dass es einen Weg gibt, den Anrufer in einem prozessübergreifenden COM-Anruf zu finden. Ich frage mich, ob es eine Möglichkeit gibt, das Gleiche für Windows-Nachrichten zu tun. –

+1

... und ich frage nicht, ob meine App es herausfinden kann. Ich frage, ob WinDbg es herausfinden kann. –