Για να ανακτήσουν το διευκρινισμένο αρχείο, οι λειτουργίες υπολογίζουν () και ενσωματώνουν () καλούνται μέσα στη λειτουργία. Η κωδικοποίηση της λειτουργίας υπολογίζει ότι () έχει δοθεί κατωτέρω:
/*Λειτουργία για να υπολογίσει το CHS Geomatry για την αποκατάσταση */
void calculate(unsigned int start,unsigned int *cylinder,
unsigned int *head,unsigned int *sector)
{
unsigned int temp;
*cylinder=0;
*head=1;
*sector=14;
if(start<5)
*sector=14+start;
else
{
temp= (start-4)/18;
if(temp>0)
{
if(temp%2==0)
*head=0;
else
*head=1;
*cylinder+=1+temp/2;
}
else
{
*head=0;
*cylinder=1;
}
*sector=(start-4)%18;
}
/// Επιδείξτε το CHS του αρχείου που ανακτάται\\\
gotoxy(10,23);
cprintf("Cylinder = %u, Head = %u, Sector = %u",
*cylinder,*head,*sector);
}
Σχόλια στην κωδικοποίηση:
Η λειτουργία υπολογίζει ότι () πρόκειται να υπολογίσει τον κύλινδρο, το κεφάλι και τις πληροφορίες τομέα για το αρχείο που ανακτάται. Μετά από τον υπολογισμό ο κύλινδρος, αριθμοί κεφαλιών και τομέα επιδεικνύεται στην οθόνη.
Η κωδικοποίηση για τη λειτουργία ενσωματώνει () έχει δοθεί κατωτέρω:
/* Ενσωματώστε το αρχείο και σώστε το ανακτημένο αρχείο στο διευκρινισμένο όνομα πορειών και αρχείων */
void integrate(long unsigned int size,
unsigned int cylinder,
unsigned int head,
unsigned int sector)
{
void clear_the_line(unsigned int);
/* Λειτουργία για να ελέγξει τον τομέα για τα λάθη*/
int verify_the_sector(unsigned int, unsigned int,
unsigned int);
int status;
char buf[512],*Filename_with_path;
struct diskinfo_t dinfo;
unsigned int result;
FILE *fp;
unsigned int left,i;
unsigned int sec;
|