AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Probleme mit 64Bit Erkennung des OS

Probleme mit 64Bit Erkennung des OS

Ein Thema von RWarnecke · begonnen am 27. Feb 2012 · letzter Beitrag vom 28. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 20:07
Hallo zusammen,

ich benutze die Funktion IsWow64 aus diesen Beitrag um zu ermitteln, ob es ein 64Bit oder ein 32Bit Betriebssystem ist. Wenn ich jetzt ein 64Bit-Programm erstelle und es auf meinem PC ausführe, funktioniert die Funktion IsWow64 hervorragend. Heute habe ich das Programm mal auf einem anderen PC ebenfalls mit Win7 64Bit ausprobiert und da wird mir angezeigt, das ich ein 32Bit Betriebssystem installiert habe. Es ist aber definitiv auf beiden PC's ein 64Bit Windows installiert.

Woran könnte es liegen, dass ein 64Bit-Programm welches mit Delphi XE2 erstellt wurde, mit der Funktion IsWow64 auf dem einen PC funktioniert und auf dem anderen nicht ?

Wie gesagt, es gibt keinen Fehler oder sonstigen Hinweis. Auf PC1 liefert mir die Funktion True zurück und auf PC2 liefert mir die Funktion False zurück.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.167 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 20:11
Ist für die Exe evtl auf dem anderen PC ein Kompatiblitätsmodus eingestellt?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 20:14
Hallo Bernhard,

danke für Deine Antwort. Nicht das ich wüsste, da ich die erstellte EXE einfach von meiner Platte auf einen USB-Stick kopiert habe und dann vom USB-Stick auf dem PC2 ausgeführt habe.

Edit: Ich habe jetzt nochmal, mein Programm auf PC1 ausprobiert. Jetzt gibt er mir den gleichen Wert wie auf PC2 aus. Alles irgendwie misteriös. Ich könnte schwören, dass er gestern Abend noch am PC1 True als Rückgabewert hatte.

Edit2: Wer lesen kann ist klar im Vorteil. Hier die Erklärung :
Zitat:
Wow64Process [out]

A pointer to a value that is set to TRUE if the process is running under WOW64. If the process is running under 32-bit Windows, the value is set to FALSE. If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE.
Rolf Warnecke
App4Mission

Geändert von RWarnecke (27. Feb 2012 um 20:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.824 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 21:04
Kompatibilitätsmodus sollte eigentlich kein Problem sein, denn in einem 64 Bit Prozess sollte IsWow64Process immer True False liefern, da es so oder so ein 64 Bit-Prozess bleiben wird und demnach auch immer nur in einem 64 Bit-OS laufen kann.

Bei einem 32 Bit-Programm könnte es anders sein, entweder es weiß daß es in einem 64 Bit-OS läuft oder ihm wird über den Kompatibilitätsmodus vorgegaugelt, daß es es eigentlich in einem 32 Bit-OS liefe.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Feb 2012 um 21:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.167 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 21:10
... enn in einem 64 Bit Prozess sollte IsWow64Process immer True liefern, da es so oder so ein 64 Bit-Prozess bleiben wird und demnach auch immer nur in einem 64 Bit-OS laufen kann.
Und wie soll eine 64-Bit Prozess im Windows32OnWindows64 laufen (Abgekürzt WoW64)?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.824 Beiträge
 
Delphi 12 Athens
 
#6

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 21:22
Kompatibilitätsmodus?

IsWow64Process gibt an, daß der Prozess in einem 64 Bit-OS läuft.

Ups nee, es war genau andersrum.
Es ist dann immer False.

OK, also IsWow64Process gibt quasi an, daß der Prozess in einem OS läuft, welches nicht seiner Bitbreite entspricht.

Theoretisch, wäre IsWow64Process in der 64 Bit-API sinnlos, genauso wie in der API eines 32 Bit-OS, aber da gibt es das ja dennoch, damit Code kompatibel bleibt.



Aber wie gesagt, bei einem 64 Bit-Programm sollte es keinen Unterschied machen und immer True ähhh False liefern.
Bleiben dann wohl nur 2 Möglichkeiten:
- Bug im OS und in dessen Implementierung. (müßte man im Debugger > CPU-Ansicht < mitbekommen, denn in der Funktion sollte einfach nur das Regiater RAX auf 0 gesetzt werden)
- Fehler in der Implementation (aber die sieht eigentlich OK aus)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Feb 2012 um 21:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 21:40
Anscheinend ist es von der WinAPI so vorgegeben. Siehe MSDN-Library durchsuchenIsWow64Process Von dieser Seite stammt auch mein Zitat von Beitrag #3.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.824 Beiträge
 
Delphi 12 Athens
 
#8

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 21:55
Bei einem Bug der WinAPI könnte man es eventuell über MSDN-Library durchsuchenGetNativeSystemInfo versuchen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 22:03
32 Bit Exe, 32-Bit OS: WOW64 -> False
64 Bit Exe, 32-Bit OS: -
32 Bit Exe, 64-Bit OS: WOW64 -> True
64 Bit Exe, 64-Bit OS: WOW64 -> False

Aber man weiß ja, ob man eine 64-Bit oder 32-Bit Anwendung compiliert hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.824 Beiträge
 
Delphi 12 Athens
 
#10

AW: Probleme mit 64Bit Erkennung des OS

  Alt 27. Feb 2012, 23:10
Das schon, aber nun denk dir eine Komponente, die jemand nicht nur für sich alleine verwenden möchte, welche aber als 32 und 64 Bit kompiliert werden könnte.

OK, man könnte alles mit Compilerschaltern vollpappen, aber theoretisch wäre es hier nicht nötig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz