jinfen
驱动牛犊
驱动牛犊
  • 注册日期2002-12-21
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2140回复:5

怎样确定 U 盘 FAT 表起始地址?

楼主#
更多 发布于:2003-07-24 10:21
要找到一个文件在U盘的位置,首先要读取MBR(主引导记录区)取得DBR(操作系统引导记录区)的首址(分区信息表 8-11 字节)。

而后读取 DBR,DBR 里有 FAT 表份数、FAT 表占用扇区数、就是没有 FAT 表的起始地址,资料上说:继 DBR 之后就是 FAT 表,是不是说比如 DBR 在 20 扇区,那么 FAT 就在 21 扇区?

如果不是,应该从那找到 FAT 表的地址?

谁能解释一下,谢谢!
szzwm
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2005-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-24 12:27
对于FAT16系统,可以说“比如 DBR 在 20 扇区,那么 FAT 就在 21 扇区”。至于FAT32系统,在DBR之后还有DBR副本和若干的保留扇区,才到FAT表,并且随着容量的不同,各部分会有调整。
U盘通常采用FAT16,第一个0x28命令的逻辑块地址是00,表示读取MBR,根据其中的分区表信息再发0x28命令,此时的命令申请的逻辑块地址就是第一个FAT所在之处。
用BusHound来调试这些功能,结合相关资料,很容易把调试进行下去的。
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-24 22:05
我已经响应了所有命令,可惜u盘还是访问不了,信号灯老是闪,不知道是什么原因?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-25 00:08
文件的起始地址在目录区里!
jinfen
驱动牛犊
驱动牛犊
  • 注册日期2002-12-21
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-25 09:32
U盘通常采用FAT16,第一个0x28命令的逻辑块地址是00,表示读取MBR,根据其中的分区表信息再发0x28命令,此时的命令申请的逻辑块地址就是第一个FAT所在之处。

我确认一下:第一个0x28命令的逻辑块地址是00,其中分区表中的起始地址是0x20,逻辑块地址0x20是 DBR(操作系统引导记录区),还是 FAT 表?我按照资料解释逻辑块地址0x20是 DBR(操作系统引导记录区),那么您指的 FAT 表地址是 0x20 还是 0x20之后?
谢谢!
chenjp
驱动小牛
驱动小牛
  • 注册日期2003-03-11
  • 最后登录2009-05-05
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-25 17:57
读取顺序应该是:MBR->BPB->FAT,FAT在BPB之后。BPB为512Byte
游客

返回顶部