///// Λειτουργία για να πάρει τις παραμέτρους Drive \\\\\
unsigned long getdrivegeometry (int drive)
{
union REGS i, o ;
struct SREGS s ;
struct geometry g = { 26, 0, 0, 0, 0, 0, 0, 0 } ;
i.h.ah = 0x48 ; /* Ο αριθμός λειτουργίας 0x48 επεκτάσεων INT 13H Βλέπει τα σχόλια
Below */
i.h.dl = drive; /* Αριθμός κίνησης */
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/* Επικαλεσθείτε το διευκρινισμένο αριθμό λειτουργίας επέκτασης INT 13H με τις τιμές καταλόγων τμήματος */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n Head = %lu, Sectors Per Track = %lu, Cylinder =
%lu\n", g.heads, g.spt, g.cyl);
/* Εάν πάρτε η λειτουργία γεωμετρίας κίνησης αποτυγχάνει, μήνυμα λάθους επίδειξης και έξοδος */
if(g.spt==0)
{
printf("\n Πάρτε τη λειτουργία γεωμετρίας Drive αποτυγχάνει....");
printf("\n Οι επεκτάσεις που δεν υποστηρίζονται, πιέζουν οποιοδήποτε πλήκτρο στην έξοδο...");
getch();
exit(1);
}
return *g.sectors; /* Επιστρέψτε τον αριθμό τομέων στο Drive */
}
////// Έναρξη του κεντρικού αγωγού \\\\\\
void main()
{
unsigned long loop=0, Sectors_in_HDD1=0, Sectors_in_HDD2=0;
unsigned char buffer[61440]; /* Απομονωτής στοιχείων 61440 ψηφιολέξεων σε ανάγνωσεις-γραφής 120 τομείς 512 ψηφιολέξεων τη φορά να κερδηθεί χρόνος. */
char choice;
clrscr();
|