Das folgende Programm ist geschrieben worden, um das DBR der schlaffen und unterschiedlichen Parameter der Scheibe zu lesen. Jedoch kannst du es für FAT12 und kleine Volumen FAT16 Festplatten auch verwenden, indem Sie die passende Sektorlage von DBR und von körperlicher Laufwerknummer spezifizieren.
/* Anzeige Aufladung Parameter des Floppy-Discs */
# include <dos.h>
# include <stdio.h>
main( )
{
struct boot
{
unsigned char code[3] ; /* Jump Code */
unsigned char system_id[8] ;/* OEM Name and Version*/
int bytes_per_sec ; /* Bytes Per Sector */
char sec_per_clus ; /* Sectors Per Cluster */
int res_sec ; /* Reserved Sectors */
char fat_copies ; /* Number of FATs */
int root_dir_entry ; /* Number of Root
Directory Entries */
unsigned int no_sects ; /* Number of Sectors in
Logical Volume */
unsigned char format_id ; /* Media Descriptor Byte
*/
int sec_per_fat ; /* Sectors Per FAT */
int sec_per_trk ; /* Sectors Per Track */
int no_sides ; /* Number of Heads */
int no_sp_res_sect ; /* Number of Hidden
Sectors */
unsigned char rest_code[482] ; /* Rest of the code */
} ;
struct boot b ;
char temp[4] ;
int val, drive ;
val = absread(0, 1, 0, &b) ; /* Use For Floppy Disk*/
if ( val == -1 )
{
printf ( "Disk read Error...bad sector\n" ) ;
exit ( 1 ) ;
}
clrscr ( ) ;
printf ( "System ID = %s\n",
b.system_id ) ;
printf ( "Bytes per sector = %d\n",
b.bytes_per_sec ) ;
printf ( "Sectors per cluster = %d\n",
b.sec_per_clus ) ;
printf ( "Reserved sectors = %d\n",
b.res_sec ) ;
printf ( "FAT copies = %d\n",
b.fat_copies ) ;
printf ( "Root directory entries = %d\n",
b.root_dir_entry ) ;
printf ( "No. of sectors on disk = %u\n",
b.no_sects ) ;
printf ( "Media Descriptor Byte = %X\n",
b.format_id ) ;
printf ( "Sectors per FAT = %d\n",
b.sec_per_fat ) ;
printf ( "Sectors per track = %d\n",
b.sec_per_trk ) ;
printf ( "No. of sides = %d\n",
b.no_sides ) ;
printf ( "No. of reserved sectors = %d\n",
b.no_sp_res_sect ) ;
return 0;
}
Wenn du dieses Programm laufen läßt, um das DBR von 1.44M, die Diskette des 3 ½ Zoll zu prüfen, die 70 Schienen hat, sind zwei Seiten, 18 Sektoren pro Schiene und 512 Bytes in einem Sektor, der Ausgang des Programms zu angezeigtes ähnliches, wie folgt:
System Identifikation = +1<*uIHC
Bytes pro Sektor = 512
Sektoren pro Block = 1
Reservierte Sektoren = 1
FAT kopiert = 2
Wurzelverzeichniseintragungen = 224
Nicht von den Sektoren auf Scheibe = 2880
Mittel-Beschreiber-Byte = F0
Sektoren pro FAT = 9
Sektoren pro Schiene = 18
Nicht von den Seiten = 2
Nicht von reservierten Sektoren = 0 |
|