#ifndef _FAT_DEFINE
#include "FAT.c"
#endif
BYTE FATMountVolumeID(BYTE Partition);
BYTE FATMountVolumeID(BYTE Partition)
{
pdata DWORD TotSec,DataSec,CountofCluster;
if (Partition>=StorageMedia.TotalPartitions) return(FAT_ERR_PARTITION_NOT_FOUND); //没找到指定扇区
StorageMedia.ReadSector(sDPT[Partition].LBABegin,DiskBuffer); //读FAT VolumeID扇区
//检查VolumeID扇区标记
if (DiskBuffer[510] != 0x55||DiskBuffer[511] != 0xaa)
return(FAT_ERR_MBR_FLAG); //不正常的引导扇区标志
//检查分区类型
StorageMedia.CurrentPartition = Partition; //当前分区号
BOOTSEC->BPB_RsvdSecCnt=MEMSwap16(BOOTSEC->BPB_RsvdSecCnt);
BOOTSEC->BPB_RootEntCnt=MEMSwap16(BOOTSEC->BPB_RootEntCnt);
BOOTSEC->FAT.F32.BPB_RootClus=MEMSwap32(BOOTSEC->FAT.F32.BPB_RootClus);
BOOTSEC->FAT.F32.BPB_FSInfo=MEMSwap16(BOOTSEC->FAT.F32.BPB_FSInfo);
BOOTSEC->BPB_TotSec16=MEMSwap16(BOOTSEC->BPB_TotSec16);
BOOTSEC->BPB_FATSz16=MEMSwap16(BOOTSEC->BPB_FATSz16);
BOOTSEC->BPB_TotSec32=MEMSwap32(BOOTSEC->BPB_TotSec32);
BOOTSEC->FAT.F32.BPB_FATSz32=MEMSwap32(BOOTSEC->FAT.F32.BPB_FATSz32);
FAT.RootSectors = (BOOTSEC->BPB_RootEntCnt * 32) / 512;
if (BOOTSEC->BPB_FATSz16!=0)
FAT.FATSz = BOOTSEC->BPB_FATSz16;
else
FAT.FATSz = BOOTSEC->FAT.F32.BPB_FATSz32;
if (BOOTSEC->BPB_TotSec16!=0)
TotSec = BOOTSEC->BPB_TotSec16;
else
TotSec = BOOTSEC->BPB_TotSec32;
DataSec = TotSec - (BOOTSEC->BPB_RsvdSecCnt + (BOOTSEC->BPB_NumFATs * FAT.FATSz) + FAT.RootSectors);
CountofCluster = DataSec / (DWORD)(BOOTSEC->BPB_SecPerClus);
if (CountofCluster<4085)
{
sDPT[Partition].FATType=FAT_TYPE_FAT12;
FAT.RootClus = BOOTSEC->BPB_RsvdSecCnt + (BOOTSEC->BPB_NumFATs * BOOTSEC->BPB_FATSz16);
}
else if (CountofCluster<65525)
{
sDPT[Partition].FATType=FAT_TYPE_FAT16;
FAT.RootClus = sDPT[StorageMedia.CurrentPartition].LBABegin + BOOTSEC->BPB_RsvdSecCnt + (BOOTSEC->BPB_NumFATs * BOOTSEC->BPB_FATSz16);
}
else
{
sDPT[Partition].FATType=FAT_TYPE_FAT32;
FAT.RootClus = BOOTSEC->FAT.F32.BPB_RootClus; //根目录簇号
}
FAT.SecPerClus = BOOTSEC->BPB_SecPerClus; //每簇扇区数
FAT.CurrentDirectory = FAT.RootClus; //当前目录入口(簇号)
FAT.FATSec = sDPT[StorageMedia.CurrentPartition].LBABegin + BOOTSEC->BPB_RsvdSecCnt; //FAT表开始的扇区号
FAT.ClusSec = sDPT[StorageMedia.CurrentPartition].LBABegin + BOOTSEC->BPB_RsvdSecCnt + (BOOTSEC->BPB_NumFATs * FAT.FATSz) + FAT.RootSectors; //簇开始的扇区
FAT.FSISec = BOOTSEC->FAT.F32.BPB_FSInfo + sDPT[Partition].LBABegin; //FAT32扩展信息扇区号
//加载第一个FAT表
StorageMedia.ReadSector(FAT.FATSec,FATTable.FAT.F12);
FATTable.Sector=0;
return(0);
}
没有合适的资源?快使用搜索试试~ 我知道了~
linux文件系统实现源码 VC源码 FAT文件系统
共76个文件
c:40个
uv2:4个
opt:4个
需积分: 10 29 下载量 60 浏览量
2010-11-25
23:33:14
上传
评论
收藏 195KB RAR 举报
温馨提示
linux文件系统实现源码 VC源码 FAT文件系统 适用各高校操作系统的课程设计的学生下载
资源推荐
资源详情
资源评论
收起资源包目录
linux文件系统实现源码.rar (76个子文件)
fat32.c51
Lib
FAT32.plg 172B
FAT.plg 170B
FAT32.C51
FATSEEKFILE.C 347B
FAT_RUN_Opt.Bak 1KB
FAT_RUN.plg 174B
FAT.C 212B
FAT.H 8KB
FAT32_RUN 84KB
FATFINDDIRENTRY.C 391B
MAIN.C 2KB
FAT_RUN 94KB
FAT16FINDDIRENTRY.C 1KB
FAT32VERSION.C 975B
FAT32.C 216B
FAT_RUN.Uv2 2KB
FAT32LISTDIRECTORY.C 2KB
FAT32_Uv2.Bak 4KB
FATNEXTCLUSTER.C 1KB
FATMOUNTVOLUMEID.C 3KB
FAT_RUN.M51 103KB
FAT32.Uv2 4KB
FAT_RUN.Opt 1KB
FAT32MOUNTVOLUMEID.C 2KB
FAT32CLOSEFILE.C 300B
FAT_RUN.HEX 114KB
FATDISKSIZE.C 207B
FAT32INIT.C 633B
FAT32GETDIRNAME.C 2KB
FATREADCLUSTER.C 523B
FAT32_Opt.Bak 3KB
FATLISTDIRECTORY.C 357B
FAT32READFILE.C 1005B
FATVERSION.C 463B
FAT_Opt.Bak 4KB
FAT32DISKFREESIZE.C 230B
FAT.Uv2 4KB
FAT32DISKSIZE.C 180B
FAT32_RUN.LNP 135B
FATGETPARTLONGNAME.C 386B
FAT32GETPARTLONGNAME.C 398B
FAT16LISTDIRECTORY.C 1KB
FAT32_RUN.M51 80KB
FAT.Opt 4KB
FAT32READCLUSTER.C 540B
FATSELECTMEDIA.C 474B
FAT32.H 6KB
FATMOUNTPARTITION.C 1KB
FATREADFILE.C 1005B
FAT32OPENFILE.C 754B
FAT32MOUNTPARTITION.C 1KB
FAT32_RUN.Uv2 2KB
FAT32FINDDIRENTRY.C 1KB
FATDISKFREESIZE.C 265B
FATCLOSEFILE.C 300B
FATCHANGEDIRECTORY.C 657B
FAT32CHANGEDIRECTORY.C 598B
FAT32_RUN.plg 176B
FATFINDPARTITIONS.C 1KB
FATCLUSTERTOSECTOR.C 337B
FAT32_RUN.Opt 1KB
FATOPENFILE.C 782B
FAT_RUN.LNP 131B
FATINIT.C 617B
FAT32NEXTCLUSTER.C 536B
FAT32.Opt 3KB
project
c51_FAT.PS 75KB
c51_FAT.IAB 68KB
c51_FAT.PRI 84KB
c51_FAT.IAD 848B
c51_FAT.PO 776B
c51_FAT.PR 13KB
c51_FAT.PFI 76B
c51_FAT.IMD 448B
c51_FAT.IMB 12KB
c51_FAT.WK3 41KB
www.pudn.com.txt 218B
共 76 条
- 1
资源评论
wwwzjuteducn
- 粉丝: 11
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功