logroom
驱动牛犊
驱动牛犊
  • 注册日期2004-02-28
  • 最后登录2004-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1059回复:2

U盘文件的问题

楼主#
更多 发布于:2004-04-03 09:23
在U盘文件开发中,定位到DBR表后,就可以计算出相应的文件绝对Sector。如:

FatStartSector=StartSector+BPB_RsvdSecCn; //FAT的起始绝对Sector:相当于跨过保留的Sector
RootStartSector=FatStartSector+(BPB_FATSz16*2); //Root起始绝对Sector:相当于从FatStartSector后,再跨过两个FAT表

//数据区:根目录+(32×根目录中目录项数)/ 每扇区字节数
FirstDataSector=RootStartSector+(BPB_RootEntCnt*32+(BPB_BytesPerSec-1))/BPB_BytesPerSec;


我们现在的问题是:如果FAT表到DATA表之间,如果存在坏区,则上述计算如何避免?
shaoshengli
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2022-02-14
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望77点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-04-03 13:13
在U盘文件开发中,定位到DBR表后,就可以计算出相应的文件绝对Sector。如:
///*****************************************************
FatStartSector=StartSector+BPB_RsvdSecCn; //FAT的起始绝对Sector:相当于跨过保留的Sector
RootStartSector=FatStartSector+(BPB_FATSz16*2); //Root起始绝对Sector:相当于从FatStartSector后,再跨过两个FAT表

//数据区:根目录+(32×根目录中目录项数)/ 每扇区字节数
FirstDataSector=RootStartSector+(BPB_RootEntCnt*32+(BPB_BytesPerSec-1))/BPB_BytesPerSec;


我们现在的问题是:如果FAT表到DATA表之间,如果存在坏区,则上述计算如何避免?
//*******************************************************

计算公式是不变的,如果存在坏区,就用一个好的块替换本块。这样从FAT到DATA就不存在坏区。

yilou
驱动小牛
驱动小牛
  • 注册日期2004-02-17
  • 最后登录2008-03-20
  • 粉丝0
  • 关注0
  • 积分320分
  • 威望32点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-03 13:25
楼上的兄弟!怎么替代啊!
希望能帮到你,希望能得到你的帮助!
游客

返回顶部