Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   XE2 Bios Daten auslesen (https://www.delphipraxis.net/162881-xe2-bios-daten-auslesen.html)

bernhard_LA 8. Sep 2011 13:25

XE2 Bios Daten auslesen
 
Anbei ein Code Fragment zum Auslesen der Biosdaten, unter D7 alles prima, nur Delphi XE2 mault jetzt

a) N : DWORD scheint falsch zu sein
b) array of Char nach Array of AnsiChar war nicht hilfreich



procedure BiosDaten(var Name, Copyright, Datum, SN : string);
var
Buffer : Array[0..8] Of Char;
N : DWORD; ------->>>> [DCC Fehler] E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
begin

ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8,N);
Buffer[8]:=#0; ----->>>>> [DCC Fehler]Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Name:=StrPas(Buffer);

........

end;

Union 8. Sep 2011 13:36

AW: XE2 Bios Daten auslesen
 
Jetzt ist die Frage: Welches ReadProcessMemory wird denn da verwendet? Schau Dir mal die Deklaration an.

Uwe Raabe 8. Sep 2011 13:41

AW: XE2 Bios Daten auslesen
 
Mach aus dem N ein NativeUInt.

DeddyH 8. Sep 2011 14:06

AW: XE2 Bios Daten auslesen
 
Und m.E.n muss es dann
Delphi-Quellcode:
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N);
heißen.

Neutral General 8. Sep 2011 14:08

AW: XE2 Bios Daten auslesen
 
Zitat:

Zitat von DeddyH (Beitrag 1122672)
Und m.E.n muss es dann
Delphi-Quellcode:
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N);
heißen.

Davon abgesehen, dass
Delphi-Quellcode:
Buffer : Array[0..8] Of Char;

9 Chars sind und nicht 8.

Uwe Raabe 8. Sep 2011 14:11

AW: XE2 Bios Daten auslesen
 
Zitat:

Zitat von DeddyH (Beitrag 1122672)
Und m.E.n muss es dann
Delphi-Quellcode:
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N);
heißen.

Das hängt allerdings davon ab, ob die Daten im BIOS als Ansi- oder WideString abgelegt sind. Ich bin davon ausgegangen, daß die Änderung des Arrays auf AnsiChar sowieso schon erfolgt ist.

Uwe Raabe 8. Sep 2011 14:11

AW: XE2 Bios Daten auslesen
 
Zitat:

Zitat von Neutral General (Beitrag 1122673)
Zitat:

Zitat von DeddyH (Beitrag 1122672)
Und m.E.n muss es dann
Delphi-Quellcode:
ReadProcessMemory( GetCurrentProcess,Ptr( $FE061),@Buffer,8 * SizeOf(Char),N);
heißen.

Davon abgesehen, dass
Delphi-Quellcode:
Buffer : Array[0..8] Of Char;

9 Chars sind und nicht 8.

In Buffer[8] steht am Ende ja auch #0!

Neutral General 8. Sep 2011 14:15

AW: XE2 Bios Daten auslesen
 
Naja, nicht wenn er nur 8 Chars liest... Sonst steht in Buffer[8] ein zufälliger Stack-Inhalt.
Quatsch! Jetzt weiß ich was du meinst :wall:

PS: Sind die BIOS-Infos wirklich WideStrings? Ich schätze mal man muss da AnsiChars nehmen.
(Es sei denn ich irre mich)

Uwe Raabe 8. Sep 2011 14:21

AW: XE2 Bios Daten auslesen
 
Zitat:

Zitat von Neutral General (Beitrag 1122676)
Naja, nicht wenn er nur 8 Chars liest... Sonst steht in Buffer[8] ein zufälliger Stack-Inhalt.
Quatsch! Jetzt weiß ich was du meinst :wall:

PS: Sind die BIOS-Infos wirklich WideStrings? Ich schätze mal man muss da AnsiChars nehmen.
(Es sei denn ich irre mich)

Das werden wohl AnsiStrings sein, sonst hätte es in D7 nicht mit
Delphi-Quellcode:
array of char
funktioniert.

DeddyH 8. Sep 2011 14:27

AW: XE2 Bios Daten auslesen
 
Ich hätte ja gedacht, dass es dann so gehen müsste:
Delphi-Quellcode:
procedure BiosDaten(var Name, Copyright, Datum, SN: AnsiString);
const
  BUFDATASIZE = 8;
var
  Buffer: Array[0..BUFDATASIZE] Of AnsiChar;
  N: DWORD {bzw. NativeUInt};
begin
  ReadProcessMemory(GetCurrentProcess, Ptr($FE061), @Buffer, BUFDATASIZE, N);
  Buffer[BUFDATASIZE] := #0;
  Name := AnsiString(Buffer);
  //...
end;
Allerdings bekomme ich da auch kein gescheites Ergebnis (XE auf Vista 32).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.
Seite 1 von 4  1 23     Letzte »    

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