|
Die int86x (0x13, &i, &o, &s) Funktion ruft die Unterbrechung 13H mit Segmentregister Werten hervor. Die getdrivegeometry Funktion bringt die Gesamtzahl auf Antrieb zurück.
- In der Haupt () Funktion (Putzfrau) peekb (0x0040, 0x0075); (das Funktion peekb wird in DOS.H definiert), bringt die Zahl den Festplatten zurück, die zum System angebracht werden.
Die Zahl den Festplatten, die an das System angeschlossen werden, wird durch das Byte dargestellt, das an der Gedächtnisposition 0040H gespeichert wird: 0075H (Segment 0040H: Offset0075h). Wenn die Zahl den Festplatten, die an das System angeschlossen werden, kleiner dann ist, zeigt Programm zwei die Fehlermeldung und die Ausgänge.
Sectors_in_HDD1 = getdrivegeometry (0x80); erhält die Parameter der ersten Festplatte (0x80) und der Rückkehr die Gesamtzahl Sektoren auf erster Festplatte.
Ähnlich Sectors_in_HDD2 = getdrivegeometry (0x81); erhält die Parameter der zweiten Festplatte (0x81) und der Rückkehr die Gesamtzahl Sektoren auf zweiter Festplatte.
Nachdem Bestätigung durch den Benutzer, zum mit Belichtung, erste überprüfung fortzufahren die Bedingung, daß die Größe der Quellfestplatte nicht grösser sein sollte dann die Größe der Festplatte des Bestimmungsortes. Wenn der Bestimmungsort kleiner ist, die Fehlermeldung anzeigen und herausnehmen.
Wenn alles nach rechts geht, die Sektoren der Quellscheibe zur Bestimmungsortscheibe kopieren. Hier sind wir Messwert und Schreiben 61440 Bytes (120 Sektoren mit jedem von 512 Bytes) hintereinander, zum des Belichtung Prozesses schneller zu bilden.
Wenn du mehr Sektoren, sogar über der Begrenzung auf 64K, kannst du hinaus hintereinander benutzen möchtest sie tun, indem Sie „sehr großen Zeiger“ im großen Gedächtnismodell verwenden. Das Beispiel der Spezifikation ist, wie folgt:
char huge array[100000L];
- Die Funktion, readabsolutesectors (0x80, Schleife, 120, Puffer); liest die 120 Sektoren der ersten Festplatte (0x80) und fährt von der Sektorzahl ab, die durch nicht unterzeichnete lange Ganzzahl Schleife spezifiziert wird und speichert die Daten im Datenpuffer.
- Die Funktion, writeabsolutesectors (0x81, Schleife, 120, Puffer); schreibt die Daten des Datenpuffers zu 120 Sektoren zweiter Festplatte (0x81) und fährt von der Sektorzahl ab, die durch nicht unterzeichnete lange Ganzzahl Schleife spezifiziert wird.
|
|