Programme pour trouver toutes les cloisons logiques et leur information
Le programme que nous avons discuté était plus tôt de lire l'information de cloison de la table de cloison de MBR. Mais juste seulement en lisant le MBR, nous ne pouvons pas obtenir l'information d'autres cloisons logiques qui sont dans la cloison prolongée du disque.
Nous avons déjà discuté que le disque principal d'initialisation a la limite de quatre entrées dans le Tableau principal de cloison. Toutefois l'endroit du disque principal prolongé d'initialisation peut être obtenu avec l'aide du disque principal d'initialisation qui contient les Tableaux prolongés de cloison, dont le format est exactement identique en date du Tableau principal de cloison.
Toutes cloisons prolongées devraient exister dans l'espace réservé par l'entrée prolongée de cloison. Seulement deux des cloisons prolongées sont censés pour être employés, la première comme cloison normale et la seconde en tant qu'autre cloison prolongée si existe.
Ainsi avec l'aide d'un Tableau principal de cloison nous pouvons obtenir l'endroit d'un autre Tableau principal prolongé de cloison à côté de lui, si présent.
Le programme suivant est pour trouver toutes cloisons logiques et leur information d'entrée de cloison, lisant MBR et MBRs prolongé à partir du disque. Le codage du programme est comme suit :
/* Le programme pour lire les paramètres de toute la cloison logique présentent dans le disque */
#include<dos.h>
char buffer[512], report_par[20];
unsigned drive_num =0x80;
unsigned long star_sec[20], sec;
/* La structure du format de paquet d'adresse de disque, être employé par les readabsolutesectors fonctionnent */
struct diskaddrpacket
{
char packetsize ; /* Taille du paquet, généralement 10H */
char reserved ; /*Réservé (0)*/
int blockcount ; /*Nombre de blocs à transférer */
char far *bufferaddress ; /* adresse pour transférer l'amortisseur */
unsigned long blocknumber[2] ; /* Commencer le nombre de bloc absolu */
} ;
void main()
{
int no_par,i;
clrscr();
no_par = 0;
All_partition_information(star_sec,&no_par,&sec,buffer,
report_par);
printf(" \n\n Cloisons totales dans le disque= %d\n ",
no_par);
for(i=0;i<no_par;i++)
{
printf("\n Commencer le nombre de secteur de cloison %d =
%lu " , i+1, star_sec[i]);
}
printf("\n");
getch();
|