Anmerkungen zur Kodierung:
Die Funktion integrieren () ist das tatsächliche Modul des Durchführens der Wiederaufnahme der benutzerspezifischen Akte, in diesem Wiederaufnahme Programm.
Der Dateiname mit dem Bestimmungsortweg, zum der zurückgewonnenen Akte zu speichern wird im Buchstabe Zeiger *Filename_with_path gespeichert. Wenn es irgendeine Störung gibt, wenn man die Bestimmungsortakte öffnet, wird Fehlermeldung angezeigt und Benutzer ist wieder sofortig, den Bestimmungsort zu betreten.
Das Funktion _bios_disk (_DISK_READ, &dinfo); liest die Daten der Akte vom Datenbereich des Scheibe Sektors durch Sektor, spezifiziert durch das Struktur dinfo und im Datenpuffer buf gespeichert. Diese Daten von 512 Bytes werden zur Bestimmungsortakte geschrieben. Dieses wird wiederholt, bis die komplette Akte integriert ist.
Das Funktion status=verify_the_sector (Zylinder, Kopf, Sektor); überprüft den gelesen zu werden Sektor. Wenn der Status = 10, es einen schlechten Sektor (0xA) darstellt. Die Kodierung der Funktion ist unten gegeben worden:
/// Den Sektor überprüfen. (Keine Daten werden hier geübertragen) \\\
int verify_the_sector(unsigned int c,unsigned int h,unsigned int s)
{
int status;
char *buf;
union REGS in, out;
struct SREGS sg;
in.h.ah = 0x04; /*Funktion Zahl */
in.h.al = 1; /*Zahl zu überprüfen der Sektoren*/
in.h.dl = 0x00; /* Laufwerknummer für A: */
in.h.ch = c; /* Zylindernummer*/
in.h.dh = h; /* Spurnummer */
in.h.cl = s; /* Sektor-Zahl */
in.x.bx = FP_OFF(buf);/* Versatz*/
sg.es = FP_SEG(buf); /* Segment */
int86x(0x13,&in,&out,&sg); /*Die Funktion 4H INTERNEN 13H benennen */
if(out.x.cflag)
{
status=out.h.ah;
}
return(status);
}
Anmerkungen zur Kodierung:
Das Funktion verify_the_sector (), überprüft den durch die _bios_disk () Funktion und die Rückkehr gelesen zu werden Sektor, der Status des Betriebes. Die Funktion verwendet INTERNES 13H und Funktion 4H, um den Sektor zu überprüfen.
*buf ist der Datenpuffer, 0x04 ist die Funktion Zahl, die durch in.h.ah = 0x04 spezifiziert wird; und in.h.al = 1; weist an, um den einen Sektor hintereinander zu überprüfen. in.h.dl = 0x00; wird für die Laufwerknummer für Diskettenlaufwerk A verwendet: , sind c, h und s Zylinder-, Haupt- und Sektorzahlen.
Die Funktion int86x () wird verwendet, um INTERNES 13H (Funktion 4H) mit Segmentregisterwerten hervorzurufen. Der Status des Betriebes wird durch den Ganzzahl Status zurückgebracht.
|