有一段这样的程序: UINT8 mIdenDisk( void ) { /* 识别分析当前逻辑盘 */ UINT8 Status; DiskStart = 0; /* 以下是非常简单的FAT文件系统的分析,正式应用绝对不应该如此简单 */ Status = mReadSector( 0, 1, DISK_BUFFER ); /* 读取逻辑盘引导信息 */ if ( Status != 0 ) return( Status ); if ( DISK_BUFFER[0] != 0xEB && DISK_BUFFER[0] != 0xE9 ) {/* 不是逻辑引导扇区 */ DiskStart = DISK_BUFFER[0x1C6] | (UINT16)DISK_BUFFER[0x1C7] << 8 | (UINT32)DISK_BUFFER[0x1C8] << 16 | (UINT32)DISK_BUFFER[0x1C9] << 24; Status = mReadSector( DiskStart, 1, DISK_BUFFER ); if ( Status != 0 ) return( Status ); } SecPerClus = DISK_BUFFER[0x0D]; /* 每簇扇区数 */ RsvdSecCnt = DISK_BUFFER[0x0E]; /* 逻辑盘的保留扇区数 */ FATSz16 = mGetPointWord( &DISK_BUFFER[0x16] ); /* FAT表占用扇区数 */ return( 0 ); } /* 成功 */ 其中 if ( DISK_BUFFER[0] != 0xEB && DISK_BUFFER[0] != 0xE9 ) {/* 不是逻辑引导扇区 */ DiskStart = DISK_BUFFER[0x1C6] | (UINT16)DISK_BUFFER[0x1C7] << 8 | (UINT32)DISK_BUFFER[0x1C8] << 16 | (UINT32)DISK_BUFFER[0x1C9] << 24; Status = mReadSector( DiskStart, 1, DISK_BUFFER ); if ( Status != 0 ) return( Status ); } 我不懂,他是怎么识别引导区的,能详细说明下么??
查看: 2728
回复: 2
CH375中是怎么识别引导区的?[求助]
热门产品 :
CH390:以太网控制器芯片
这个需要你去找资料看看。微软有一份文档 FAT文件系统白皮书 去找这个资料里面有详细的说明,协议性的东西没法解释为什么。
纠正一个问题,引导区的识别不是由CH375识别的,CH375只负责读取物理扇区的数据,然后由程序来分析,至于如何分析,则要参考1楼所提的文档
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录