Hallo Leute.
Ich versuche nun schon geraume Zeit, die BIOS-Daten aus dem
RAM in einem ByteArray abzulegen. Leider
klappt das nicht so wie ich es gerne hätte. Orientiert habe ich mich am BiosHelper von
NicoDe und auch an der SMBIOS-Spezifikation von DMTF. Die Forensuche und auch Google habe mich bis jetzt nicht weiter gebracht.
Ich weiß leider nicht wo mein Fehler liegt...
Delphi-Quellcode:
const
SIZE_256K = $3FFFF;
RomBiosDumpBase = Cardinal($000C0000);
RomBiosDumpBasePtr = Pointer(RomBiosDumpBase);
RomBiosDumpEnd = Cardinal($000FFFFF);
RomBiosDumpEndPtr = Pointer(RomBiosDumpEnd);
RomBiosDumpSize = Cardinal(RomBiosDumpEnd - RomBiosDumpBase + 1);
type
{PByteArray in SysUtils.pas kann nur max. 32767 Bytes fassen, deshalb die "Eigenkreation"}
TBigByteArray = array [0 .. SIZE_256K] of Byte;
PBigByteArray = ^TBigByteArray;
...
var
pba: PBigByteArray;
begin
pba := RomBiosDumpBasePtr;
fs := TFileStream.Create('G:\DUMP.BIOS', fmCreate);
try
for iIndex := 0 to SizeOf(pba^) do
begin
fs.Write(pba^[iIndex], SizeOf(Byte));
end;
finally
FreeAndNil(fs);
end;
Ich habe auch mal mit den Pointer-Adressen etwas rumgespielt. Allerdings ohne Erfolg
In der Datei, wenn denn mal was reingeschrieben wird, steht nur kauderwelsch, unter anderem auch Ordnernamen.
Ich vermute mal, dass ich falsch auf den Speicher zugreife. Vielleicht kann mir mal jemand den Zaun um die Ohren hauen.
Danke _BlackDragon_