AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) läuft Programm unter 32-Bit oder 64-Bit ab ?

läuft Programm unter 32-Bit oder 64-Bit ab ?

Ein Thema von Gerkey · begonnen am 6. Jun 2017 · letzter Beitrag vom 10. Jun 2017
Antwort Antwort
Seite 1 von 2  1 2   
Gerkey

Registriert seit: 18. Okt 2016
Ort: Bad Kreuznach
55 Beiträge
 
Delphi XE Professional
 
#1

läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 08:20
Habe Programme in der 32-Bit Version erstellt, die nun auch unter 64-Bit ablaufen sollen, was aber Änderungen u.a. beim Umgang mit einer MSACCESS Datenbank erfordert.
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 08:42
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?
Gibt es: IsWow64Process
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 13:57
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?
Gibt es: IsWow64Process
Die API ist aber etwas tricky:
Zitat:
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.
Hier gibt es jetzt zwei Fälle, in denen die API "false" wird:
  1. 32-Bit Windows -> Eigener Prozess ist zwingend auch 32-Bit
  2. 64-Bit Prozess

Macht also keine sichere Aussage darüber, ob der eigene Prozess jetzt unter 32 oder 64-Bit läuft. Dafür müsste man entweder mit konditionalen Compilerdirektiven arbeiten, oder zur Laufzeit ermitteln, ob Windows selbst 32 oder 64 Bit ist.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 14:07

Hier gibt es jetzt zwei Fälle, in denen die API "false" wird:
  1. 32-Bit Windows -> Eigener Prozess ist zwingend auch 32-Bit
  2. 64-Bit Prozess
Die Originalfrage wird aber genau durch diesen Rückgabewert beantwortet, denn das Programm ist per Vorgabe 32-Bit. Zur Erinnerung:

Habe Programme in der 32-Bit Version erstellt, die nun auch unter 64-Bit ablaufen sollen, was aber Änderungen u.a. beim Umgang mit einer MSACCESS Datenbank erfordert.
Gibt es eine Möglichkeit im Programm abzufragen, unter welcher Version es gerade abläuft ?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 15:45
Die Originalfrage wird aber genau durch diesen Rückgabewert beantwortet, denn das Programm ist per Vorgabe 32-Bit.
Da habe ich die Frage scheinbar falsch verstanden. Ich ging davon aus, dass er sowohl für 32 als auch für 64 Bit kompilieren will.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 14:14
Es sagt ja auch "Ich laufe im 32 Bit-Subsystem eines 64 Bit-Windows", also muß es für True zwangsläufig auch ein 32 Bit-Programm sein.
WoW64 = Windows (32) on Windows 64

64 Bit-Programme laufen zwangsläufig in einem 64 Bit-Windows
und 32 Bit-Programme können damit abfragen, ob sie in einem 32 Bit-Windows ober im Subsystem eines 64 Bit-Windows laufen.

Delphi-Quellcode:
{$IF SizeOf(Pointer) = 4}
{$IFDEF CPUX86}
{$IFDEF WIN32}

{$IF SizeOf(Pointer) = 8}
{$IFDEF CPUX64}
{$IFDEF WIN64}
Spaßig wird es, wenn es mal ein 128 Bit-Windows gibt und 32 Bit-Windowse dann auch noch leben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Gerkey

Registriert seit: 18. Okt 2016
Ort: Bad Kreuznach
55 Beiträge
 
Delphi XE Professional
 
#7

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 9. Jun 2017, 15:19
Mit der Bitte um Nachsicht für einen Noch-Anfänger : Wie setze ich denn "isWOW64Process" im Programm ein ?
Gibt's es irgendwo einen Beispiel-Code ?

Gerkey
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#8

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 9. Jun 2017, 15:23
Gibt's es irgendwo einen Beispiel-Code ?
Delphi-Quellcode:
  
  function IsWOW64: BOOL;
  begin
    IsWow64Process(GetCurrentProcess, Result);
  end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 08:43
Könntest Du das ein wenig ausführlicher erklären?
Ich arbeite seit Jahren mit 32-Bit-Kompilaten sowohl unter 32-Bit als auch 64-Bit Betriebssystemen, ohne Änderungen an den Programmen vor zu nehmen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: läuft Programm unter 32-Bit oder 64-Bit ab ?

  Alt 6. Jun 2017, 09:48
Es gibt für 32 Bit-Programme in einem 64 Bit-Windows, also unter WoW64 einige "Umleitungen", in der Registry und im Dateisystem.

Vorallem bei Dingen, die es als 32 und 64 Bit gibt, kommt es schonmal vor dass es da Prolemchen gibt, wenn sie von Beidem angesprochen werden können. (hier die DB)

Also passend zum IsWow64Process würde ich noch MSDN-Library durchsuchenWow64DisableWow64FsRedirection erwähnen.
Ein Therapeut entspricht 1024 Gigapeut.
  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 14:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz