Δοκιμάστε αυτές τις πληροφορίες για να σκουπίσετε τα στοιχεία οποιουδήποτε αρχείου που αποθηκεύεται σε 1.44Mb, δισκέτα ίντσας 3 ½, με τη βοήθεια των πληροφοριών καταλόγου ρίζας. Υποθέτοντας ότι το στοιχείο στη δισκέτα δεν είναι τεμαχισμένο, το πρόγραμμα που δίνεται έπειτα σκουπίζει τα στοιχεία του διευκρινισμένου αρχείου από την περιοχή στοιχείων του:
/*Πρόγραμμα για να σκουπιστεί η περιοχή στοιχείων του διευκρινισμένου αρχείου στη δισκέτα */
#include<stdio.h>
#include<dos.h>
///// Δομή για να διαβάσει 32 ψηφιολέξεις του λήμματος αρχείων στον κατάλογο ρίζας\\\\\
struct root
{
unsigned char filename[8]; /* Λήμμα ονόματος αρχείων 8 ψηφιολέξεων */
unsigned char extension[3]; /* Επέκταση του αρχείου 3 ψηφιολέξεων*/
unsigned char attribute; /* Ψηφιολέξη ιδιοτήτων αρχείων */
unsigned char reserved[10]; /* Διατηρημένες ψηφιολέξεις 10 */
unsigned int time; /* Χρόνος, 2 ψηφιολέξεις */
unsigned int date; /*Ημερομηνία, 2 ψηφιολέξεις*/
unsigned int starting_cluster;/* Αρχική συστάδα του αρχείου, 2 ψηφιολέξεις*/
unsigned long file_size; /* Μέγεθος αρχείων στις ψηφιολέξεις, 4 ψηφιολέξεις */
};
/* Πρέπει να ληφθείτε αυτό για να διαβάσει όλες τις καταχωρήσεις καταλόγου ρίζας */
//struct ρίζα entry[224 ;
/* Δομή για να διαβάσει και τα 16 λήμματα αρχείων σε έναν τομέα του καταλόγου ρίζας */
struct one_root_sector
{
struct root entry[16];
};
struct one_root_sector one;
void main()
{
int result, i, num_sectors,j;
char wipe_buf[512]; /* Απομονωτής στοιχείων που χρησιμοποιείται για να σκουπίσει έξω την περιοχή στοιχείων του αρχείου*/
clrscr();
result= absread(0x00, 1, 19, &one); /*Διαβάστε τον απόλυτο τομέα 19 (πρώτος τομέας του καταλόγου ρίζας) */
if (result != 0)
{
perror("Το λάθος στον τομέα της ανάγνωσης, πιέζει οποιοδήποτε πλήκτρο στην έξοδο...");
getch();
exit(1);
}
|