Programma om alle logische verdelingen en hun informatie te vinden
Het programma dat wij moest vroeger de verdelingsinformatie van de verdelingslijst van MBR lezen hebben besproken. Maar slechts enkel door MBR te lezen, kunnen wij niet de informatie van andere logische verdelingen krijgen die in uitgebreide verdeling van de schijf zijn.
Wij hebben reeds besproken dat het Hoofdverslag van de Laars de grens van vier ingangen in de Hoofdlijst van de Verdeling heeft. Nochtans kan de plaats van het Uitgebreide Hoofdverslag van de Laars met behulp van het Hoofdverslag van de Laars worden verkregen dat de Uitgebreide Lijsten van de Verdeling bevat, het waarvan formaat precies het zelfde vanaf de belangrijkste Lijst van de Verdeling is.
Alle uitgebreide verdelingen zouden binnen de ruimte moeten bestaan die door de uitgebreide verdelingsingang wordt gereserveerd. Slechts twee van de uitgebreide verdelingen moeten, de eerste als normale verdeling worden gebruikt en de tweede aangezien een andere uitgebreide verdeling als bestaat.
Aldus met behulp van één Hoofdlijst van de Verdeling kunnen wij de plaats van een andere Uitgebreide Hoofdlijst van de Verdeling naast het krijgen, als heden.
Het volgende programma is voor het vinden van alle logische verdelingen en hun informatie van de verdelingsingang, lezend MBR en Uitgebreide MBRs van de schijf. De codage van het programma is als volgt:
/* Programma om de parameters van al logische verdeling te lezen huidig in de schijf */
#include<dos.h>
char buffer[512], report_par[20];
unsigned drive_num =0x80;
unsigned long star_sec[20], sec;
/* Structuur van het pakketformaat van het Adres van de Schijf, dat door de readabsolutesectorsfunctie moet worden gebruikt */
struct diskaddrpacket
{
char packetsize ; /* Grootte van Pakket, over het algemeen 10H */
char reserved ; /*Gereserveerde (0)*/
int blockcount ; /* Aantal Blokken aan Overdracht*/
char far *bufferaddress ; /* adres om Buffer over te brengen */
unsigned long blocknumber[2] ; /* Het beginnende Absolute Aantal van het Blok */
} ;
void main()
{
int no_par,i;
clrscr();
no_par = 0;
All_partition_information(star_sec,&no_par,&sec,buffer,
report_par);
printf(" \n\n Totale Verdelingen in Schijf= %d\n ",
no_par);
for(i=0;i<no_par;i++)
{
printf("\n Het beginnende Aantal van de Sector Verdeling %d =
%lu " , i+1, star_sec[i]);
}
printf("\n");
getch();
}
|