以下纲领是经过大量的对比,体积大于解读:
/*节目展示长靴参数体积大圆盘*/
# include "dos.h"
# include "stdio.h"
void main()
{
struct boot
{
unsigned char code[3] ; /* 跳码 */
unsigned char system_id[8] ; /* OEM的版本名称及 */
int bytes_per_sec ; /* 每界字节 */
char sec_per_clus ; /* 每个部门联网*/
unsigned int res_sec ; /* 一些部门预留 */
char fat_copies ; /* 多少脂肪 */
unsigned int root_dir_entry ;/* 入境人数根目录 */
unsigned int no_sects ; /* 一些行业逻辑卷(如量<=解读) */
unsigned char Media_id ; /* 媒体描述字节
*/
unsigned int sec_per_fat ; /* 每发行业 */
unsigned int sec_per_trk ; /* 每个部门跟踪 */
unsigned int no_sides ; /* 数人头 */
unsigned long no_sp_res_sect ; /* 一些隐性行业 */
unsigned long long_sec_num ; /* 共有行业逻辑卷(大小>解读) */
unsigned long num_sec_per_FAT; /* 每发行业 */
unsigned int binary_flags; /* 二元旗 */
unsigned char version_of_FAT1; /* 第一字节脂肪版 */
unsigned char version_of_FAT2; /* 第二字节脂肪版 */
unsigned long root_dir_start_cluster;
/* 根目录开始簇人数 */
unsigned int sec_num_of_file_sys;
/* 信息产业界的一些文件系统
*/
unsigned int sec_num_of_backup_boot_sec;
/* 一些部门引导扇区备份
*/
unsigned char reserved[12]; /* 预留 */
unsigned char logical_drive_number;
/* 一些体力活动逻辑卷 */
unsigned char unused_byte; /* 未字节 */
unsigned char hex_extd_boot_signature;
/* 延长长靴签字(检出) */
unsigned long binary_volume_ID;/* 二进制数量身份证 */
unsigned char volume_label[11];/* 商品标签 */
unsigned char FAT_name[8]; /* 发名 */
unsigned char rest_code[420] ; /* 其余420个字节的布拉格反射 */
unsigned char magic_number[2]; /* 魔术数字 */
} ;
struct boot b ;
char temp[4] ;
int val, drive,i;
val = biosdisk( 2, 0x80, 1,0,1,1, &b ) ;
/* 首硬盘 */
if ( val == -1 )
{
printf ( "Disk read Error...bad sector\n" ) ;
exit ( 1 ) ;
}
clrscr ( ) ;
printf ( " Jump Instruction Code = ");
for(i=0;i<=2;i++)
{
printf("%X",b.code[i]);
}
printf("(H)\n ");
printf ( "OEM name and version = %s\n ",
b.system_id ) ;
printf ( "Bytes per sector = %u\n ",
b.bytes_per_sec ) ;
printf ( "Sectors per cluster = %u\n ",
b.sec_per_clus ) ;
printf ( "Reserved sectors = %u\n ",
b.res_sec ) ;
printf ( "FAT copies = %d\n ",
b.fat_copies ) ;
printf ( "Root directory entries = %u\n ",
b.root_dir_entry ) ;
printf ( "No. of sectors on disk = %u\n ",
b.no_sects ) ;
printf ( "Media Descriptor Byte = %X(H)\n",
b.Media_id ) ;
printf ( "Sectors per FAT = %u\n ",
b.sec_per_fat ) ;
printf ( "Sectors per track = %u\n ",
b.sec_per_trk ) ;
printf ( "No. of sides = %u\n ",
b.no_sides ) ;
printf ( "No. of reserved (Hidden) sectors= %lu\n ",
b.no_sp_res_sect ) ;
printf ( "========== For Large(>32MB) Disks ========\n");
printf ( "No. of sectors,(if Volume is >32MB) = %lu\n ",
b.long_sec_num) ;
printf ( “Number of Sectors Per FAT = %lu\n “,
b.num_sec_per_FAT );
printf ( "Root Directory Starting Cluster = %lu\n ",
b.root_dir_start_cluster);
printf ( "File System Information Sector = %u\n ",
b.sec_num_of_file_sys);
printf ( "Sector Number of Backup Boot Sector = %u\n ",
b.sec_num_of_backup_boot_sec);
printf ( "Physical Drive Number = %X(H)\n",
b.logical_drive_number);
printf ( "Extended Boot Signature = %X(H)\n",
b.hex_extd_boot_signature);
printf ( "32-Bit Binary Volume ID = ");
Decimal_to_Binary(b.binary_volume_ID,32);
printf ( " (B)\n ");
printf ( "Volume Label = ");
for(i=0;i<=10;i++)
{
printf ( "%c",b.volume_label[i]);
}
printf ( "\n FAT name = ");
for(i=0;i<=7;i++)
{
printf ( "%c",b.FAT_name[i]);
}
printf ( "\n ");
printf ( "Magic Number = %X%X(H)",
b.magic_number[0],b.magic_number[1]);
getch();
}
|