Programm, zum aller logischen Fächer und ihrer Informationen zu finden
Das Programm, das wir war uns besprachen früh, die Fachinformationen von der Fachtabelle von MBR zu lesen. Aber gerade nur indem wir das MBR lesen, können wir nicht die Informationen anderer logischer Fächer erhalten, die in ausgedehntem Fach der Scheibe sind.
Wir haben bereits uns daß besprochen Vorlagenaufladung Aufzeichnung hat die Begrenzung auf vier Eintragungen in Vorlagenfach-Tabelle. Jedoch kann die Position der ausgedehnten Vorlagenaufladung Aufzeichnung mit Hilfe der Vorlagenaufladung Aufzeichnung erreicht werden, die enthält Ausgedehnte Fach-Tabellen,, wer Format genau das selbe ab der Hauptfach-Tabelle ist.
Alle ausgedehnten Fächer sollten innerhalb des Raumes bestehen, der durch die ausgedehnte Facheintragung aufgehoben wird. Nur zwei der ausgedehnten Fächer werden bedeutet, das erste als normales Fach und die Sekunde als ein anderes ausgedehntes Fach verwendet zu werden, wenn besteht.
So mit Hilfe einer Vorlagenfach-Tabelle können wir die Position einer anderen ausgedehnten Vorlagenfach-Tabelle nahe bei ihr erhalten, wenn Geschenk.
Das folgende Programm ist für das Finden aller logischen Fächer und ihrer Facheintragung Informationen, Messwert MBR und ausgedehntes MBRs von der Scheibe. Die Kodierung des Programms ist, wie folgt:
/*Das Programm, zum der Parameter alles logischen Faches zu lesen stellen sich in der Scheibe dar */
#include<dos.h>
char buffer[512], report_par[20];
unsigned drive_num =0x80;
unsigned long star_sec[20], sec;
/* Struktur des Plattenadresse-Paketformats, durch die readabsolutesectors verwendet zu werden arbeiten*/
struct diskaddrpacket
{
char packetsize ; /* Größe des Pakets, im Allgemeinen 10H */
char reserved ; /* Reserviert (0) */
int blockcount ; /* Zahl zu bringen der Blöcke*/
char far *bufferaddress ; /* Adresse, zum des Puffers zu bringen */
unsigned long blocknumber[2] ; /* Beginnen der absoluten Block-Zahl */
} ;
void main()
{
int no_par,i;
clrscr();
no_par = 0;
All_partition_information(star_sec,&no_par,&sec,buffer,
report_par);
printf(" \n\n Gesamtfächer in der Scheibe = %d\n ",
no_par);
for(i=0;i<no_par;i++)
{
printf("\n Beginnen von Sektor-Zahl des Faches %d =
%lu " , i+1, star_sec[i]);
}
printf("\n");
getch();
}
|