|
发表于 2008-2-2 23:31:47
|
显示全部楼层
windowsxp 和dos读取dbr部分所要求的参数是不一样的。可能windowsxp下很关键的字段,到dos下就是毫无意义的。
下面是fat32的dbr数据结构描述:
#include <linux/types.h>
#pragma pack(1)
struct fat32_dbr{
__u8 jmp[3];//JMP代码
__u8 oem[8];//OEM
__u16 bytes_of_sector;//每扇区字节数
__u8 sectors_of_clus; //每簇扇区数
__u16 reserved_sectors;//保留扇区数,一般都是32
__u8 fat_count;//FAT个数
__u16 boot_record;//引导记录数
__u16 sectors_1;//扇区数(小于32MB),FAT32不使用
__u8 media;//介质描述符:F8
__u16 sectors_of_fat;//FAT扇区数,FAT16下使用,FAT32不使用
__u16 sectors_of_track;//每磁道扇区数
__u16 citou_count;//磁头数
__u32 sectors_before;//隐含扇区数,从0到DBR的扇区数
__u32 sectors;//本分区扇区数
__u32 sectors_of_fat32;//每个FAT扇区数
__u16 sign;//标记
__u16 version;//版本
__u32 first_dir_entry;//引导目录第一簇
__u16 fs_info;//DBR占用扇区数
__u16 bak_dbr;//备份引导扇区
__u8 reserved[12];//保留
__u8 bios;//BIOS设备
__u8 not_use;//未使用
__u8 expend_boot_flag;//扩展引导标志(29H)
__u32 fs_id;//卷序列号
__u8 fs_name[11];//卷标
__u8 fs_type[8];//文件系统格式
__u8 boot_code[420];//引导代码
__u8 end_sign[2];//结束标志55AA
};
只有拿到lz的dbr扇区数据做个对比才能知道到底是哪个参数坏掉了。这个得具体试。 |
|