社区
硬件/系统
帖子详情
怎样读取FDT表(FAT32)
nietsche
2009-10-20 06:41:22
1,FAT32没有FDT表,那怎么获取文件目录及文件信息?
2,是否每一个文件都有一个FAT表和相应的(FDT——姑且如此称呼)?
3,怎样读取FAT表?它代表着什么,怎样来定位文件位置?
4,FAT32下要获取文件详细信息及所在簇,是否必须全盘扫描磁盘?
(问题很菜!望多包涵!)
多谢!
...全文
1434
8
打赏
收藏
怎样读取FDT表(FAT32)
1,FAT32没有FDT表,那怎么获取文件目录及文件信息? 2,是否每一个文件都有一个FAT表和相应的(FDT——姑且如此称呼)? 3,怎样读取FAT表?它代表着什么,怎样来定位文件位置? 4,FAT32下要获取文件详细信息及所在簇,是否必须全盘扫描磁盘? (问题很菜!望多包涵!) 多谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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.
FAT32
文件系统
所谓文件系统,就是对数据进行管理的一种方法,其下的所有的数据都要按照它规定的格式和规则进行存取和修改。而
FAT32
文件系统简单的说就是以FAT
表
来对数据进行管理,用32位长度的值来
表
示位置偏移的一种文件系统。它还有两个大哥,FAT12和FAT16,这里不做说明。 不考虑操作系统和MBR的限制,
FAT32
文件系统最大支持128T的大小(2^28*4K*128,即最多有2的28次方个簇,每个
FAT文件系统详解(一)
一、前序 每篇文章前都要说些什么吧,不然觉得有点尴尬,你问为什么要写这篇文章?我说是为了“虚拟文件系统”管理讲解做铺垫,我一直的想法就是“一定要知道原理,才能做的更远更好”,因为你知道这其中的原理了,之后如果遇到问题了,就不好慌乱,一切让你心慌意乱的事儿都是一些你不能把握的事情,因为你不知道将会发生什么,掌握来原理,你就能掌握规律,你就能预判会发生什么,你也不会心慌了。 二、硬盘的结构。 (1)硬...
SD在fat16
读取
数据
C 前段时间用FPGA上的NIOS写了个贪吃蛇的程序,由于上次在论坛上写了好久,结果保存的时候提示我说提交错误,后来就贴了几张图片上去了,这几天弄了个俄罗斯方块的程序和SD卡读txt文件的程序,在这里和大家交流一下。 大家都知道SD卡有两种模式,SD总线模式和SPI总线模式,由于以前用过SPI总线,在这里就利用SPI总线来完成SD卡的
读取
。 大家知道在SD卡上电的时候会自动进入SD总线
FAT32
格式理解
1 硬盘结构 由上面可知,主引导记录MBR中的分区
表
有4个分区项目,每个分区项可以放一个主分区,也就是
表
中的基本分区,或者放一个基本分区。所以系统最多有四个主分区,但是如果我们想要更多的分区的话,我们可以放扩展分区,一个扩展分区可以扩展无限个逻辑分区。上图有三个主分区,一个扩展分区,扩展分区扩展为2个逻辑分区。 扩展分区是如何扩展的呢,其实,每个逻辑分区的头部都有一个字段指向下一个逻辑分区
文件目录
表
(
FDT
)及其结构
用FORMAT命令对磁盘(或逻辑盘)进行格式化的时候,就已经为整个硬盘建立了一个根目录
FDT
。在根目录下,用户可以用DOS命令"MD"再创建不同的各个子目录,以及子目录下的子目录。根目录以及各级子目录都有自己的
FDT
。在具体操作中,系统规定用字母C-Z代
表
逻辑盘符,所以DOS简单地用“[盘符:]/”
表
示在根目录下。根目录的作用是分配根目录下的所有文件和子目录的存储空间(逻辑扇区号),并且通过设
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章