Σχόλια στην κωδικοποίηση προγράμματος:
Στην κωδικοποίηση του προγράμματος, κάθε βήμα είναι ίδιο όπως στο προηγούμενο πρόγραμμα εκτός από τον απομονωτή dbuf2[512 στοιχείων ], τον οποίο χρησιμοποιούμε για να χειριστούμε το λάθος που παράγεται από τον κακό τομέα κατά τη διάρκεια της λειτουργίας ανάγνωσης δίσκων και για να διατηρήσουμε το μέγεθος του αρχείου εικόνας.
Με να κάνουμε αυτό, γεμίζουμε το διάστημα των πληροφοριών, τις οποίες αποτύχαμε να διαβάσουμε από τον κακό τομέα και τώρα γράφουμε τις ψευδο πληροφορίες 512 ψηφιολέξεων έτσι ώστε μπορούμε να διατηρήσουμε την ακρίβεια της εικόνας δίσκων.
Κολλήστε τα στοιχεία από το αρχείο στη φυσική επιφάνεια της φρέσκιας δισκέτας:
Σε αυτό το βήμα, κολλάμε τα στοιχεία που αποθηκεύονται στο αρχείο από το προηγούμενο πρόγραμμα, στη φυσική επιφάνεια της φρέσκιας δισκέτας, τομέας από τον τομέα με τον ίδιο τρόπο από τον οποίο το αντιγράψαμε στο αρχείο.
Το πρόγραμμα συνεχίζει με τα ακόλουθα κύρια βήματα:
- Ανοίξτε το αρχείο στο οποίο αποθηκεύσαμε τα στοιχεία επιφάνειας της δυσανάγνωστης δισκέτας προσωρινά.
- Μονογράψτε το σύστημα δίσκων κατάλληλα από τη λειτουργία 00H επαναρύθμισης του INT 13H.
- Γράψτε τις πληροφορίες για τους τομείς της φρέσκιας δισκέτας από το αρχείο.
- Επιδείξτε γράφει τη θέση ταυτόχρονα για να βρεί ή να αποφύγει το περιστατικό των λαθών.
Ο κώδικας πηγής προγράμματος έχει δοθεί κατωτέρω. Εξετάστε πώς λειτουργεί:
/* Πρόγραμμα για να γραφτούν τα στοιχεία όσον αφορά τους τομείς της επιφάνειας της φρέσκιας δισκέτας από το αρχείο, που δημιουργείται από το προηγούμενο πρόγραμμα*/
#include <bios.h>
#include <stdio.h>
void main(void)
{
int head,track;
union REGS regs;
int result,i,sector;
int count =0;
char filename[80];
struct diskinfo_t dinfo;
static char dbuf[512];
FILE *fp;
clrscr();
printf("\n Εισάγετε το όνομα του αρχείου με την πορεία για να αποθηκεύσετε τα στοιχεία προσωρινά\n");
gets(filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Δεν θα μπορούσε να δημιουργήσει το αρχείο, να πιέσει οποιοδήποτε πλήκτρο στην ΕΞΟΔΟ");
getch();
exit(1);
}
|