AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) 32-Bit-Programm soll 32- und 64-Bit-OS erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

32-Bit-Programm soll 32- und 64-Bit-OS erkennen

Ein Thema von Delphi-Laie · begonnen am 9. Sep 2011 · letzter Beitrag vom 11. Apr 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#1

AW: 32-Bit-Programm soll 32- und 64-OS erkennen

  Alt 10. Apr 2012, 23:17
Kann ich denn mit einem 32Bit-Programm eine 64Bit-DLL laden, um die Existenz eben dieser Funktion zu ermitteln?
Ja kannst du natürlich. Aber nicht mit MSDN-Library durchsuchenLoadLibrary sondern mit MSDN-Library durchsuchenLoadLibraryEx und LOAD_LIBRARY_AS_DATAFILE. Alles andere wäre Unsinn, denn man kann so sogar Ressourcen-DLLs für jede andere Architektur (bspw. Alpha) ebenfalls laden und benutzen.

Warum schreibe ich das, weil die Information daß es nicht ginge nur die halbe Wahrheit (bis Unwahrheit) ist. Ich kann sogar ermitteln ob eine Funktion exportiert wird, aber mit dem Handle in dem Falle eventuell nicht mehr über MSDN-Library durchsuchenGetProcAddress, der Grund ist in den vielen Varianten zu suchen die es für Exporte gibt

Die Funktion existiert allerdings in der 32bit-Variante von kernel32.dll wenn ich mich recht entsinne. Und kernel32.dll ist in jedem Win32-Prozeß schon geladen bevor dein Haupthread startet.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: 32-Bit-Programm soll 32- und 64-Bit-OS erkennen

  Alt 11. Apr 2012, 07:23
Moin Oliver,

schön, mal wieder etwas von Dir zu lesen.

Die Variante mit "Load_As_DataFile" ist mir bekannt, doch wie gehst Du denn mit den unterschiedlichen Calling-Conventions um, wenn Du eine DLL und die in ihr enthaltenen Funktionen tatsächlich nutzen willst? Ich hielt dies bisher für ein "No-Go" und hatte daher ebenfalls die Ansicht propagiert, dass eine normale 32bit-DLL mit Funktionen nicht im Rahmen einer 64bit-Anwendung zu nutzen sei (Ressourcen-DLLs ausdrücklich ausgenommen).
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: 32-Bit-Programm soll 32- und 64-Bit-OS erkennen

  Alt 11. Apr 2012, 07:47
32 Bit-DLL in 64 Bit Programm zu nutztn, das soll gehn?
Der Code müßte doch in einer 32 Bit-Umgebung ausgeführt werden, oder täusche ich mich da?

Gut, vieleicht könnte man da soeinen DLLHost als Zwischenschicht nutzen, aber eine Funktion direkt in der Anwendung auszuführen dürfte etwas schwer werden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: 32-Bit-Programm soll 32- und 64-Bit-OS erkennen

  Alt 11. Apr 2012, 10:20
Die Variante mit "Load_As_DataFile" ist mir bekannt, doch wie gehst Du denn mit den unterschiedlichen Calling-Conventions um, wenn Du eine DLL und die in ihr enthaltenen Funktionen tatsächlich nutzen willst?
Meines Wissens nach geht das nicht ohne weiteres. Wobei ich mir vorstellen kann, daß man in einem gewissen Rahmen Thunking implementieren könnte (wobei ich mir dann 32bit-DLLs in einem 64bit-Prozess die leichtere Variante vorstellen würde, umgekehrt hätte ich noch nichtmal eine Idee).

Es ging mir darum zu zeigen daß man auch bei einer 64bit-DLL ohne weiteres herausfinden kann ob eine Funktion existiert, siehe:

Kann ich denn mit einem 32Bit-Programm eine 64Bit-DLL laden, um die Existenz eben dieser Funktion zu ermitteln?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:15 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