AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Rückgabeparameter DLL analysieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabeparameter DLL analysieren

Ein Thema von zeras · begonnen am 25. Jan 2019 · letzter Beitrag vom 29. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#1

Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 19:15
Ich habe eine 32 Bit DLL, die funktioniert. Nun habe ich auch eine 64 Bit vom selben Hersteller bekommen. Diese macht Probleme. Zuerst habe ich mein Projekt mal testweise auf 64 Bit umgestellt, da diese offenbar auch nur mit der 64 Bit Variante zurechtkommt.
Nun habe ich in dieser DLL eine Funktion, die mehrere Parameter zurückgibt. Diese scheinen aber nicht mehr zu passen.
Der Aufruf sieht so aus

Delphi-Quellcode:
function FindFirstx(hier stehen einige Parameter
                          var fInfo1 : _xINFO;
                      ): Boolean stdcall; external NameDLL name 'FindFirstx';
Gibt es eine Möglichkeit, sich die Rückgabeparameter erst einmal "roh" anzuschauen? Vielleicht ist die Deklaration bei 64 auch anders als bei 32.
Wenn ich einen Hexcode bzw. String anschauen könnte, wäre das erst einmal ausreichend.
Reichen die Infos oder muss ich genauer erklären?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 19:28
Nicht wirklich, oder? Tools wie Dll export viewer zeigen dir an was exportiert wird, aber die Parameter kann man doch nicht wissen, oder?


Meine Vermutung wäre eher dass sich in 64 Bit an der Größe der Parameter etwas ändert, z.B. weil es auf der Delphi-Gegenseite falsch definiert wurde und ein Typ verwendet wurde der sich nicht mitänderte.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 19:30
Etwas mehr Information wäre schon schön...
Wie ist _xINFO definiert etc....
gibt es eine *.h Datei zur DLL?
oder liefert der Hersteller eine *.pas?
Fritz Westermann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 19:41
Hallo,
wenn _xINFO ein Record ist, muss man auch noch das ev. geänderte Alignment der Parameter berücksichtigen.

Zitat:
Reichen die Infos oder muss ich genauer erklären?
Nein und Ja.
Heiko
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#5

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 19:44

Meine Vermutung wäre eher dass sich in 64 Bit an der Größe der Parameter etwas ändert, z.B. weil es auf der Delphi-Gegenseite falsch definiert wurde und ein Typ verwendet wurde der sich nicht mitänderte.
Das vermute ich und daher wollte ich schauen, ob die Parameter vielleicht da sind, nur falsch interpretiert werden.

Etwas mehr Information wäre schon schön...
Wie ist _xINFO definiert etc....
gibt es eine *.h Datei zur DLL?
oder liefert der Hersteller eine *.pas?
Die _xINFO ist eine Struktur, die in der 32 Bit Variante u.a. AnsiChar enthält. Vielleicht hat die 64 Bit Variante Char als Typ. Das wollte ich rausfinden, indem ich vielleicht auf alle Rückgabeparmeter zugreifen kann.
Es gibt eine Headerdatei und diese heißt auch xxxxx32.h. Eine xxxxx64.h habe ich nicht bekommen. Leider gibt es keine *.pas hierzu.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 20:05
Da Du ja nicht bereit bist mehr Informationen zu liefern

Leg Dir einen Buffer an:

TInfo_xInfo = Array[0..4096] of byte. Grösser als dein Struct

fülle den mit 0 oder was auch immer und lass in auf Deine Dll los.

Dann kannst Du ja schauen was drin steht
Fritz Westermann
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: Rückgabeparameter DLL analysieren

  Alt 25. Jan 2019, 20:52
Da Du ja nicht bereit bist mehr Informationen zu liefern
Weiter oben hatte ich ja weitere Infos gegeben.
Ich weiß aber nicht so recht, ob ich die Strukturen offenlegen darf. Deswegen nur die Ansätze.



Leg Dir einen Buffer an:

TInfo_xInfo = Array[0..4096] of byte. Grösser als dein Struct

fülle den mit 0 oder was auch immer und lass in auf Deine Dll los.

Dann kannst Du ja schauen was drin steht

Das klingt ja nicht schlecht. Werde das mal probieren und schauen, ob ich da mehr sehe.

Danke trotzdem.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#8

AW: Rückgabeparameter DLL analysieren

  Alt 26. Jan 2019, 14:10

Leg Dir einen Buffer an:

TInfo_xInfo = Array[0..4096] of byte. Grösser als dein Struct

fülle den mit 0 oder was auch immer und lass in auf Deine Dll los.

Dann kannst Du ja schauen was drin steht
Das habe ich nun getan und im Fehlerfalle wird einfach kein einziges Byte aus dem Array geändert, obwohl die Funktion erfolgreich meldet.
Ich muss nun auf den Hersteller zugehen, damit er das nochmal testet. Er kann ja in die Quellen der DLL schauen im Gegensatz zu mir.

Danke nochmals für den Tipp.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Rückgabeparameter DLL analysieren

  Alt 28. Jan 2019, 07:50
Da Du ja nicht bereit bist mehr Informationen zu liefern
Weiter oben hatte ich ja weitere Infos gegeben.
Ich weiß aber nicht so recht, ob ich die Strukturen offenlegen darf. Deswegen nur die Ansätze.
Kopiere die Definition aus der Header-Datei und deine Delphi-Übersetzung hier rein und ersetze Funktions- und Parameternamen gegen etwas unverfängliches.

Also statt
Code:
int makeMeRich(int Bernsteinzimmer, char* Weltformel);
schreibst du
Code:
int myFunction(int a, char* b);
Möchte Bits und Byte wetten, dass du Schindluder bei den Datentypen getrieben hast und bspw. Cardinal anstatt SIZE_T oder PChar anstatt PByte oder Integer anstatt THandle oder oder oder bei deiner Übersetzung genommen hast.
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#10

AW: Rückgabeparameter DLL analysieren

  Alt 28. Jan 2019, 18:44
Hier die originale Deklaration in C
Code:
XSX_BOOL L_EXPORTS FindFirstx(
                          int32 par1,
                          const char    *par2,
                          uint8          par3,
                          uint8          par4,
                          int32          *par5,
                          char          *par6,
                          uint32_t       par7);
die ich so übersetzt habe:
Delphi-Quellcode:
function FindFirstx(
                       par1 : int32;
                       const par2: arDataTcp; //= array[0..1000] of Ansichar;
                          par3 : BYTE;
                          par4 : BYTE;
                          var par5 : int32;
                          var par6 : arDataTcp; //= array[0..1000] of Ansichar;
                          par7 : uint32
                      ): Boolean stdcall; external NameDLL name 'FindFirstx';
Ist da was falsch?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:28 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