怎样读取FDT表(FAT32)

nietsche 2009-10-20 06:41:22
1,FAT32没有FDT表,那怎么获取文件目录及文件信息?
2,是否每一个文件都有一个FAT表和相应的(FDT——姑且如此称呼)?
3,怎样读取FAT表?它代表着什么,怎样来定位文件位置?
4,FAT32下要获取文件详细信息及所在簇,是否必须全盘扫描磁盘?
(问题很菜!望多包涵!)
多谢!
...全文
1241 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CharlesYJ 2012-03-05
  • 打赏
  • 举报
回复
对呀,要用啥函数还是??
yu_bao_zhu 2011-12-02
  • 打赏
  • 举报
回复
楼主,你好,我刚接触FATA32方面的知识,以前没有一点基础,看见你的问题解决了,弱弱的请教你:如何读取FAT表里的内容?谢谢···
nietsche 2009-10-26
  • 打赏
  • 举报
回复
问题解决!结贴!
nietsche 2009-10-22
  • 打赏
  • 举报
回复
多谢cnzdgs!
这是找到的几个有用公式:
FAT表中文件的开始偏移地址: 保留扇区 x 512 + 文件开始簇号 x 4

FAT表中文件的结束偏移地址: ( 保留扇区 x 512 + (文件开始簇号+文件总簇数)x 4 ) - 1

FAT32某文件或目录首逻辑扇区号 = DATA起始扇区号 +(该文件或目录起始簇号-2)x 每簇扇区数


我的方法:
先从根目录读取根目录下的目录表,如果是目录则递归找其目录;
读取文件时,先从首簇号读取,然后在FAT表里面找簇号链,ReadFile,或是WriteFile!
cnzdgs 2009-10-22
  • 打赏
  • 举报
回复
1,FAT32没有FDT表,那怎么获取文件目录及文件信息?
FAT32不使用固定的根目录区,根目录与其它子目录一样动态分配空间,其首簇号在BPB中记录。

2,是否每一个文件都有一个FAT表和相应的(FDT——姑且如此称呼)?
FAT表是记录所有文件和目录的,每个文件和目录在其中有一个簇链。

3,怎样读取FAT表?它代表着什么,怎样来定位文件位置?
先在文件所属的目录中找到文件的目录入口,从中取出首簇号,然后以首簇号为下标在FAT中取出下一簇号,如此获取簇链,直到遇到FFFFFFF(7个F)表示结束。

4,FAT32下要获取文件详细信息及所在簇,是否必须全盘扫描磁盘?
如果自己分析文件系统,需要根据文件路径逐层查找子目录,最终找出文件的目录入口。如果在Windows系统中执行,可以用CreateFile打开文件,再用DeviceIoControl FSCTL_GET_RETRIEVAL_POINTERS获取文件的储存位置。
MoXiaoRab 2009-10-20
  • 打赏
  • 举报
回复
MoXiaoRab 2009-10-20
  • 打赏
  • 举报
回复
FAT32
1.DBR 从第0扇区开始,使用三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等重要参数和引导记录.(佔用32扇區)
2.FAT表长 在DBR第24H处的4字节(表示FAT占用扇区数),FAT1從第32扇區開始.
3.FAT簇 FAT表中每簇地址占4Bytes
4.可用簇号 00000002H - FFFFFEFFH
5.特定簇号 0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号:F8 FF FF 0F FF FF FF 0F
值00000000H表示该簇未被分配值FFFFFF0FH表示是该簇是文件占用的最后一族
特定值表示坏簇,其它值表示为文件占用的下一簇的簇号
6.根目录区扇区大小, 不再是固定区域和固定大小
7.扇区数量 在DBR第20H处的4字节
nietsche 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 nietsche 的回复:]
1,FAT32没有FDT表,那怎么获取文件目录及文件信息?
2,是否每一个文件都有一个FAT表和相应的(FDT——姑且如此称呼)?
3,怎样读取FAT表?它代表着什么,怎样来定位文件位置?
4,FAT32下要获取文件详细信息及所在簇,是否必须全盘扫描磁盘?
(问题很菜!望多包涵!)
多谢!
[/Quote]


-----那文章有看到,不过不明白怎么获取目录项,比如怎么读取FAT?而且是FAT32,不是FAT16.

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧