Unterscheidung 32 / 64 Bit
-
Hi,
ist es möglich, bei Programmausführung eine Prüfung zu machen, ob das OS 32 oder 64 Bit ist? Und dann wahlweise andere API-Aufrufe durchzuführen oder muss ich sowas zwangsläufig bei der Kompilierung festlegen und das ganze Programm dann als 32 Bit oder 64 Bit bereitstellen?
-
Man könnte zu Beginn 32Bit Code laufen lassen und anschließend aus der exe ein 32 und eine 64Bit Anwendung extrahieren. So machen es viele Tools von Sysinternals. Wo liegt denn das Problem mal eben für 23Bit zu kompilieren, die Exe wegzuspeichern und dann für 64Bit?
Ich weiß nicht ob man bestimmte Abschnitte im Code explizit als 32 oder 64Bit kompilieren kann aber ich glaube sowas mal in Assembler gemacht zu haben. Da war ein Berech in 16Bit und der andere in 32Bit. Vielleicht geht es ja damit. Aber Assembler halt;-)
-
Hallo,
das wurde bereits http://www.c-plusplus.net/forum/viewtopic-var-t-is-217885-and-highlight-is-iswow64.html schon einmal behandelt.
Gruß
-
Hi
Ich schliesse mich da mal secondsun an.
Das solltest du dir auch noch zu gemüte führen.http://msdn.microsoft.com/en-us/library/ms724429(v=VS.85).aspx
lowbyte
-
Ich hatte das Problem auch mal.
Hab das mittels dieser Funktion gelöst://Gib Bitversion von Windows LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL IsWow64() { BOOL bIsWow64 = FALSE; fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(TEXT("kernel32")),"IsWow64Process"); if (NULL != fnIsWow64Process) { if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) { // handle error } } return bIsWow64; }
-
achmist war ein anderer oben schneller:
Von dort hatte ich das glaube auch damals.