Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bios auslesen funktioniert nicht (https://www.delphipraxis.net/69162-bios-auslesen-funktioniert-nicht.html)

creature 11. Mai 2006 07:22


Bios auslesen funktioniert nicht
 
Code:
 try
  Label1.Caption := String(Pchar(Ptr($FE061))); // BIOS Name
  Label2.Caption := String(Pchar(Ptr($FE091))); // CopyRight-Informationen
  Label3.Caption := String(Pchar(Ptr($FFFF5))); // BIOS Datum
  Label4.Caption := String(Pchar(Ptr($FEC71))); // Seriennummer
 except
  Label1.Caption := 'keine Info';
  Label2.Caption := 'keine Info';
  Label3.Caption := 'keine Info';
  Label4.Caption := 'keine Info';
 end;
ich hab den quellcode verwendet und auch schon über google gesucht. über google komm ich an die gleiche lösung, nur funktioniert das scheinbar nicht mit delphi 6.
könnte mir da jemand helfen oder kennt den fehler?

gruß, creature

Luckie 11. Mai 2006 07:25

Re: Bios auslesen funktioniert nicht
 
NJimm die BIOSHelp von Nico: http://www.michael-puff.de/dirindex..../Importe/Nico/

s.h.a.r.k 11. Mai 2006 07:26

Re: Bios auslesen funktioniert nicht
 
Schau mal hier. Da Demo oben funktioniert auf WinXP - habs grad getestet!

[edit]da war wohl wieder jemand schneller...[/edit]

Mavarik 11. Mai 2006 07:31

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von s.h.a.r.k
Schau mal hier. Da Demo oben funktioniert auf WinXP - habs grad getestet!

[edit]da war wohl wieder jemand schneller...[/edit]

Hast Du verstanden, warum er den ASM in einem Record Hardcoded und nicht ASM oder Inline nimmt?


Frank :coder:

s.h.a.r.k 11. Mai 2006 07:34

Re: Bios auslesen funktioniert nicht
 
Von ASM habe ich persönlich keine Ahnung, a müsstest du wohl mit dem Author der Software bzw. des Codes Kontakt aufnehmen. Habe nur kurz im Internet nach einer Lösung für creature gesucht un das gefunden. Hab mir dann nur noch das Demo runtergeladen und getestet ob es funktioniert, was es auch tut - warum kann ich dir also net sagen :lol:

creature 11. Mai 2006 07:36

Re: Bios auslesen funktioniert nicht
 
das ging ja flott. :cheers:
danke. :thumb:

Luckie 11. Mai 2006 08:18

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von Mavarik
Hast Du verstanden, warum er den ASM in einem Record Hardcoded und nicht ASM oder Inline nimmt?

Bei NicoDe mus sich das ein ums andere Mal den Kopf schüttel, da frage ich bei solchen Nichtigkeiten schon gar nicht mehr nach. :mrgreen:

NicoDE 11. Mai 2006 09:08

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von Mavarik
Hast Du verstanden, warum er den ASM in einem Record Hardcoded und nicht ASM oder Inline nimmt?

Versuch mal mit einem 32-Bit Compiler 16-Bit-Code zu generieren :D
(ok, in der ersten Version habe ich genau das gemacht - aber es gibt auch Pascal-Compiler die kein Intel-ASM verstehen...)

Die aktuelle Version liegt auf meiner Homepage (2.2). Im Netz ist ab und zu eine 3.0 zu finden (x64/w2k3sp1-Support) die für TuneUp erweitert wurde.

Luckie 11. Mai 2006 09:14

Re: Bios auslesen funktioniert nicht
 
Die von deiner HP ist von 2003-07-23. Dann dürfte ich auch die aktuelle auf meiner Homepage haben.

NicoDE 11. Mai 2006 09:18

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von Luckie
Die von deiner HP ist von 2003-07-23. Dann dürfte ich auch die aktuelle auf meiner Homepage haben.

Nunja, bei dir liegt die 1.03 (nur noch aus historischen Gründen von Bedeutung), bei mir die 2.2 (die letzte aktuelle öffentliche Version) und bei manchen die 3.0 (TuneUp) :)

Luckie 11. Mai 2006 09:24

Re: Bios auslesen funktioniert nicht
 
Dann gib mir doch mal den Link zur 3.0'er. ;)

NicoDE 11. Mai 2006 09:40

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von Luckie
Dann gib mir doch mal den Link zur 3.0'er. ;)

Schwierig, die in meiner Arbeitszeit geschriebenen Quellcodes kann ich nicht ohne Weiteres veröffentlichen...

RWarnecke 17. Dez 2006 08:01

Re: Bios auslesen funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich muss dieses Thema nochmals aufgreifen. Ich benutze das BIOSHelp von NicoDe um Daten aus dem BIOS auszulesen. Funktioniert auch soweit ganz gut. Nur habe ich jetzt bei mir auf der Firma einen neuen Rechner zum Testen bekommen. Wenn ich dort das Programm ausführe, dann zeigt er mir nichts an. Ausser das Bild im Anhang. Das ist ein Rechner von Fujitsu Siemens Esprimo P5615 mit einem AMD Sempron 3200+ 64Bit Prozessor.

Kann mir da jemand weiterhelfen, wie ich auch jetzt die Daten vom BIOS bekomme ?

NicoDE 17. Dez 2006 18:08

Re: Bios auslesen funktioniert nicht
 
Das Beispielprojekt (BiosInfo) ist nur ein Beispiel, keine SMBIOS-Referenzimplementierung.
1) Die SMBIOS-Tabellen werden nicht standardkonform ausgelesen (um Probleme mit diversen nicht standardkonformen BIOS-Versionen zu verhindern).
BiosInfo hat immer dann Probleme, wenn der erste Tabelleneintrag nicht die BIOS-Info 0 ist (tritt oft bei Dell Noteboks auf).
2) Einige BIOS-Versionen legen die SMBIOS-Tabelle an ungewöhnliche Adressen. Aber dafür gibt es ja die Ex-Funktion.

Nichts, was sich nicht durch Änderungen an deinem Programm beheben lässt...

RWarnecke 17. Dez 2006 18:26

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von NicoDE
Aber dafür gibt es ja die Ex-Funktion.

Ex-Funktion, habe ich da etwas übersehen ? Wie funktioniert die ?

NicoDE 17. Dez 2006 23:23

Re: Bios auslesen funktioniert nicht
 
Nimm erstmal die Version 3.0 (Bei Google suchenBiosHelp-3.0.zip). Dann sollte das Problem schon nicht mehr auftreten.

RWarnecke 18. Dez 2006 06:16

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von NicoDE
Nimm erstmal die Version 3.0 (Bei Google suchenBiosHelp-3.0.zip). Dann sollte das Problem schon nicht mehr auftreten.

Danke ersteinmal für den Hinweis. Nur leider funktioniert diese Version auch nicht mit meinem Rechner. Ich habe es jetzt erstmal über WMI gelöst. Nur das Problem dabei ist, in dem BIOS von dem FSC Computer stehen zwei Seriennummern. Es gibt einmal eine Custom und eine BIOS. Das WMI liest leider nur die Custom Seriennummer aus. Wo gibt es denn Informationen darüber, damit ich eventuell, wenn es denn nicht an meinen Fähigkeiten scheitert diese Unit weiterzuentwickeln ?

NicoDE 18. Dez 2006 18:51

Re: Bios auslesen funktioniert nicht
 
Schreib mal in der BiosInfo.dpr vor die Zeile
Delphi-Quellcode:
    // validate table address
den folgenden Code
Delphi-Quellcode:
    Text := Text + 'TableAddress: 0x' + IntToHex(SmEP.TableAddress, 8) + #10;
und poste hier den Wert oder einen Screenshot.

RWarnecke 18. Dez 2006 20:07

Re: Bios auslesen funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

müsste die Zeile nicht so heißen ?
Delphi-Quellcode:
Text := Text + 'TableAddress: 0x' + IntToHex(SmEP.Intermediate.TableAddress, 8) + #10;
Ohne Intermediate, bekomme ich einen Syntax-Fehler. Die Zeile ergibt den Screenshot 1 im Anhang. Was sagt Dir aber nun diese TableAddress ? Den Screenshot vom anderen Rechner kann ich hier erst morgen früh posten.

NicoDE 18. Dez 2006 20:19

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von RWarnecke
Ohne Intermediate, bekomme ich einen Syntax-Fehler.

Upz, meine Fehler. Du hast natürlich recht.

Zitat:

Zitat von RWarnecke
Was sagt Dir aber nun diese TableAddress?

Die Adresse sagt mir, dass sie außerhalb des üblichen ROM-BIOS-Bereiches liegt (0x0000-$FFFF).
Um das analysieren zu können, bräuchte ich erstmal einen kompletten Dump des ROM-BIOS... ich schreibe heute Abend/Nacht mal ein Tool dafür.

RWarnecke 18. Dez 2006 20:31

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von NicoDE
Die Adresse sagt mir, dass sie außerhalb des üblichen ROM-BIOS-Bereiches liegt (0x0000-$FFFF).Um das analysieren zu können, bräuchte ich erstmal einen kompletten Dump des ROM-BIOS... ich schreibe heute Abend/Nacht mal ein Tool dafür.

Ich verstehe im Moment nur Bahnhof. Was ist ein Dump vom ROM-BIOS ? Kann man nicht einfach den Bereich erweitern ?

Daniel G 18. Dez 2006 20:39

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von RWarnecke
Was ist ein Dump vom ROM-BIOS ?

Vergleichbar mit einer 1:1 Kopie einer CD. Quasi sowas wie ein Image. :wink:

RWarnecke 18. Dez 2006 20:48

Re: Bios auslesen funktioniert nicht
 
Ok, das habe ich jetzt verstanden. Nur wie bringt mich dieses Dump dann weiter ? Kann ich dann sehen, an welcher Stelle der Manufacture, die Seriennummer u.s.w. steht ?

Edit:
Welche Adressen ich brauche um bestimmte Dinge auszulesen ?

Mackhack 18. Dez 2006 20:51

Re: Bios auslesen funktioniert nicht
 
Hi,

ist ein interessantes Thema... Wie wird denn ein Dump des BIOS ROM erstellt? Gibts dafuer APIs?

Daniel G 18. Dez 2006 20:51

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von RWarnecke
Nur wie bringt mich dieses Dump dann weiter ?

Der Dump bringt Nico weiter. Er ist unser Experte für solche Geschichten. :wink:

//Edit:
@RWarnecke:
Zitat:

Zitat von RWarnecke
Kann ich dann sehen, an welcher Stelle der Manufacture, die Seriennummer u.s.w. steht ?

Üm, k.A. :duck:
Zitat:

Zitat von RWarnecke
Welche Adressen ich brauche um bestimmte Dinge auszulesen ?

Google mal nach Bei Google suchenSMBIOS
Da kannst du dir mal die Definition für diesen Standard herauspicken.

@Mackhack: Müsste Nico beantworten, die Frage. Dafür habe ich mich zu wenig mit der Materie beschäftigt.

NicoDE 18. Dez 2006 20:53

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von RWarnecke
Kann man nicht einfach den Bereich erweitern ?

Macht keinen Sinn, da Adressen über F000:FFFF (000FFFFF) nicht zum ROM-BIOS gehören. Und 3FF7C000 liegt weit über dem Bereich.
Ich vermute eher, dass das High-Word ignoriert werden kann (also TableAddress $000C000 ist) oder, dass es als Segment-Adresse zu interpretieren ist (also TableAddress $000C3FF7 ist). Aber beantworten kann ich es erst, wenn ich mir die Bios-Daten (in eine Datei gespeichert = Dump) ansehen kann.

RWarnecke 18. Dez 2006 20:56

Re: Bios auslesen funktioniert nicht
 
Zitat:

Zitat von Mackhack
ist ein interessantes Thema...

Da gebe ich Dir Recht.

Zitat:

Zitat von Mackhack
Wie wird denn ein Dump des BIOS ROM erstellt?

Das würde mich auch interessieren.

NicoDE 18. Dez 2006 21:12

Re: Bios auslesen funktioniert nicht
 
Um einen Dump zu erstellen, legst du zwei neue Variablen in der Hauptfunktion an
Delphi-Quellcode:
var
  //...
  FileHandle: THandle;
  BytesWrite: DWORD;
begin
und fügst folgenden Code vor "if SmBiosGetEntryPoint(Dump, SmEP) = nil then" ein:
Delphi-Quellcode:
//...
  FileHandle := CreateFile('BiosDump.dmp', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0);
  if FileHandle <> INVALID_HANDLE_VALUE then
  try
    WriteFile(FileHandle, Dump, SizeOf(Dump), BytesWrite, nil);
  finally
    CloseHandle(FileHandle);
  end;
Dann das Programm starten und die BiosDump.dmp hier anhängen oder mir per PN schicken.

core 23. Dez 2006 14:38

Re: Bios auslesen funktioniert nicht
 
Hallo!

Ist es auch möglich über den BiosHelper den Bios-Ram (also den Datenbereich des Bios: Link) auszulesen.
Die Funktion MEM bzw. MEMW gibt es ja meines Wissens unter Delphi nicht mehr.
Ich möchte nämlich den gesamten Datenbereich einfach in eine Datei dumpen! Ein Assembler Beispiel würde mir auch schon genügen.

mfg core


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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