![]() |
Sektoren von der Festplatte lesen
Hi,
ich bin gerade dabei mich mit etwas... naja, "tiefgreifenderen" Dingen zu beschäftigen :) und versuche, Sektoren direkt von der Festplatte zu lesen. Leider habe ich dazu nur etwas eingestaubten TP-Code gefunden, den ich nicht in Delphi übersetzt bekomme :) Ich kann ihn ja trotzdem mal posten.
Delphi-Quellcode:
Gefunden auf
function bios_ReadAbsSector(drv, head: byte; cyl: word; sector: byte; var
buffer): byte; var regs: TRegisters; begin regs.ah:=02; regs.dl:=drv; regs.dh:=head; regs.ch:=cyl and $ff; regs.cl:=(sector and $3f) or ((cyl and $300) shr 2); regs.al:=1; regs.es:=seg(buffer); regs.bx:=ofs(buffer); intr($13,regs); if (regs.flags and $01)=0 then begin bios_ReadAbsSector:=0; end else begin bios_ReadAbsSector:=regs.ah; end; end; ![]() Es werden also die unterschiedlichsten Register belegt. Theoretisch ließe sich ja dieser Quelltext ja mit Delphi umsetzen, nur hängt es bei mir an zwei Stellen...
Hier nochmal der Delphi-Quelltext, soweit ich ihn habe:
Delphi-Quellcode:
function bios_ReadAbsSector(drv, head: byte; cyl: word; sector: byte; var
buffer): byte; var b, bCyl: byte; begin bCyl := cyl and $ff; b := (sector and $3f) or ((cyl and $300) shr 2); asm mov ah, 02 mov dl, drv mov dh, head mov ch, bCyl mov cl, b mov al, 1 mov es, {???} mov bx, {???} int 19 {???} end; {???} end; Vielen dank schonmal! FProg |
Re: Sektoren von der Festplatte lesen
hi,
soweit ich sehe, benutzt du den Bios Interrupt 13h (19 in dezimal) ! Bios Interrupts können nur im 16-Bit Mode ausgeführt werden (in MS-DOS z.B. oder auch im V86-Mode von Windows,so wie 16-Bit Turbo Pascal Programme emuliert werden) ! Da Delphi aber 32-Bit Code erstellt, dürfte dies leider nicht funktionieren ! cu, stefan2005 |
Re: Sektoren von der Festplatte lesen
Zitat:
Viele Grüße FProg |
Re: Sektoren von der Festplatte lesen
Jupp: DiskImageNT:
![]() |
Re: Sektoren von der Festplatte lesen
Zitat:
Noch jemand eine Idee? Viele Grüße FProg |
Re: Sektoren von der Festplatte lesen
Er schreibt ja selber:
Zitat:
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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