SuRun x64
Mein Arbeitsrechner hat einen Core 2 Quad Prozessor. Damit kann man prima herausfinden, ob die eigene Software auch bei vielen Threads gute Arbeit verrichtet. Ich habe zum Software-Testen ein Windows XP x64 installiert und erstaunt festgestellt, dass unter x64 auch ganz normale 32Bit Dienste laufen können. So z.B. lief mein SuRun ohne Probleme… ähm ohne Abzustürzen 🙄 …so richtig in Funktion wollte es nicht kommen.
Also machte ich den Versuch, SuRun mit VC8 (Visual Studio 2005) zu kompilieren. Das ging natürlich erstmal gar nicht und später nicht ohne Weiteres. Die „sicheren“ String-Funktionen, die es in VC8 gibt, kann man mit VC6 nicht benutzen, nimmt man die aber nicht, warnt der Compiler sich halb Tod. Auch bei der Implementierung von for-Schleifen hat Microsoft was geändert, so funktionierte in VC6
for(int i=10;i;i-- ) printf("Hallo"); int x=i; //korrekt, i ist noch definiert.
und es war ein Fehler, wenn man schrieb
for(int i=10;i;i-- ) printf("Hallo"); for(int i=10;i;i-- ) //Fehler! i ist bereits definiert printf("Hallo");
Bei VC8 (out of the Box) ist das alles anders und ich war zu faul, mich näher damit zu beschäftigen.
Also habe ich lieber einen Weg gesucht, SuRun für x64 mit VC6 zu kompilieren.
Dabei bin ich auf Stefan Kuhr’s hervorragenden Blog gestoßen. Stefan hat u.A. in neun Artikeln (1,2,3,4,5,6,7,8,9) zu Windows x64 geschrieben, was ich wissen wollte. Danke Stefan! 🙂
Also habe ich das „Windows Server 2003 SP1 Platform SDK“ (April 2005) installiert und erstmal probiert, ob meine Anwendungen noch kompilierbar sind und funktionieren. Zwei Bibliotheken des SDK scheinen nicht mit VC6 debug Versionen zu harmonieren (uuid.lib, shell32.lib). Ich habe sie durch funktionierende ersetzt und alles scheint zu funktionieren.
Dann habe ich mich daran gemacht, dem Projekt von SuRun eine x64 Konfiguration hinzuzufügen.
Nach dem Anpassen vieler Datentypen kompilierte mein VC6 dann auch ein SuRun x64 binary.
In Windows x64 ausprobiert stellte ich dann fest, dass SuRun’s Hooks in 64Bit Anwendungen klaglos funktionierten, in 32Bit Anwendungen jedoch nicht. Ist ja auch klar: In Windows x64 laufen zwei Systeme parallel, Win32 und Win x64!
Also habe ich ein SuRun32 zu SuRun x64 dazu gepackt. SuRun x64 startet bei der Benutzeranmaldung nun auch „SuRun32 /SYSMENUHOOK“. Damit haben beide Teilsysteme von Windows den System-Menü-Hook.
Bisher funktioniert SuRun x64 bei mir in VMware und „Windows XP Professional x64 Edition“ ohne Probleme.
Am 22. September 2007 um 16:28 Uhr
Good. I’m going to change UAC in Vista to SuRun. 🙂 You can add something like auto-update feature – that will be very useful with this update frequency. 🙂
Am 24. September 2007 um 07:40 Uhr
I still hope that this was the last Update for a long time… as I thought that with the previous versions 😉
Am 26. September 2007 um 11:01 Uhr
Mit den for-Schleifen hatte ich damals auch zu kämpfen. Der SC11 wird ja mit VC6 (x32) und VC8 (x64) kompiliert. Daher blieb nur die Lösung, ‚i‘ vor dem Anfang der Schleife explizit zu deklarieren. Ich weiß nicht, ob die Compileroption „/Zc:forScope“ hier helfen würde.
Zur Vermeidung der vielen Hinweise auf sichere Funktionen einfach nur als allererstes „#define _CRT_SECURE_NO_DEPRECATE“ schreiben. Das verhindert die Warnungen.
Meine ersten x64-Versuche hatte ich mangels fehlendem VS 2005 auch noch mit dem VC6 vorgenommen, allerdings war das Debuggen mit WinDbg nicht wirklich eine Freude. 😉
Am 28. September 2007 um 14:00 Uhr
Danke für die Tipps 😀
Mein nächstes C++ wird wohl VC2008 werden… da kann ich hoffentlich auch Deine IDE-Erweiterungen (WndTabs/Unterstrichene Buchstaben im Dialogeditor) nutzen, um mich wieder heimig zu fühlen 🙂
Am 5. Oktober 2007 um 22:00 Uhr
EasyTabs kannst Du ab sofort ausprobieren. 🙂
Der neue Einstellungsdialog von SuRun sieht übrigens sehr schick aus.
Am 9. Oktober 2007 um 07:51 Uhr
Wow! Du bist schneller als Microsoft… Ich warte noch auf den fertigen Killerwal bis ich mein geliebtes VC6 auf die Halde schicke 🙂