CallStack
-
Wie kann ich die Funktion von der aus meine Funktion aufgerufen wurde ausfindig machen? Ich weiß das das im CallStack steht, aber wie komm ich da ran?
Danke im Voraus,
SWW13
-
Da musst du debugg0rn. Ich empfehle Visual Studio.
-
Danke für den Tipp, ich will aber zur Laufzeit herausfinden woher der Funktionsaufruf kommt. Ich brauch auch gar nicht den Namen mir würde die Adresse schon reichen.
-
Hab's mir nicht allzu genau angeschaut, aber das könnte hinhauen: http://www.codeproject.com/KB/threads/StackWalker.aspx
edit: Der Source aus dem Link funktioniert aber wahrscheinlich nur, wenn Debug-Informationen da sind.
-
Die Namen sind mir ja egal, wenn es die Namen irgendwie holt braucht es auch die Adresse, also müsste es hinhauen. Danke für denn Link.
-
Also das ganze funktioniert irgendwie mit StackWalk64. Es ist komplizierter als ich gedacht hab. Ich werd mein Problem anders lösen, aber trotzdem danke für die Mühe.
Grüße SWW13
-
Du solltest eine andere Lösung für Dein Problem finden!!!
Warum willst Du den Aufrufer wissen?
Wenn es nur bestimmte Aufrufer geben darf, dann verwende doch irgendein Key, welcher er Dir mitgeben darf und sich somit "authentifiziert" (siehe PKCS).
Das mit dem Callstack würde ich vergessen; das ist zu langsam (ich hab den Codeproject Artikel geschrieben
)
-
Ich wollte eigentl. eine Klasse schreiben die eine Funktion hookt, das Problem ist das ich beim Aufruf meiner Funktion dann nicht mehr weiß von wo der Aufruf kam, da ich ja keinen Objektverweiß übergeben kann. Deshalb hab ich mir überlegt ich könnt eine Globalefunktion benutzen und einfach überprüfen von wo aus der Aufruf kam, aber da es eben nicht so einach geht ist es unsinnig.
Ich mach es jetzt über die alt bewährte weiße, meine Funktion ruft die originale Funktion auf. Hab ich zumindest vor, aber meine Sprungfunktion oder irrgendwas anderes macht noch zicken ( http://www.c-plusplus.net/forum/viewtopic-var-t-is-249078.html ).Btw: Steht der CallStack eingentl. im Programm selbst oder verwaltet den das System?
Grüße SWW13
-
Ähhh... ich glaube Du machst was beim Hooken falsch... solche Probleme hat man dabei nicht...
-
Normal nicht, wenn man Dinge ausprobiert und meint soetwas könnte klappen, dann schon. Aber aus Fehlern lernt man ja schließlich.
Grüße SWW13