///// Fonction pour obtenir des paramètres d'entraînement \\\\\
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 ; /* Le nombre 0x48 de fonction des prolongements 13H INTERNES voient les commentaires ci-dessous */
i.h.dl = drive; /* Nombre d'entraînement */
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/* Appeler le nombre indiqué de fonction de la prolongation 13H INTERNE avec des valeurs de registre de segment */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n Head = %lu, Secteurs par voie = %lu, Cylinder =
%lu\n", g.heads, g.spt, g.cyl);
/* Si obtenir la fonction de la géométrie d'entraînement échoue, montre le message d'erreur et sort */
if(g.spt==0)
{
printf("\n Obtenir la fonction de la géométrie d'entraînement échoue....");
printf("\n Les prolongements non soutenus, appuient sur n'importe quelle touche pour sortir...");
getch();
exit(1);
}
return *g.sectors; /* Renvoyer le nombre de secteurs sur la commande */
}
////// Début de force \\\\\\
void main()
{
unsigned long loop=0, Sectors_in_HDD1=0, Sectors_in_HDD2=0;
unsigned char buffer[61440]; /* Amortisseur de données de 61440 bytes à la lecture/écriture 120 secteurs de 512 bytes à la fois pour sauver le temps. */
char choice;
clrscr();
|