FAT32 中sector number和cluster number的转换关系

#define DOS_MIN_CLUSTER         (2)

secNo<->ClusterNo.
typedef long long sector_t

sector_t clus2sec(clusNo)
{
    sector_t secNo;
    secNo=(clusNo-DOS_MIN_CLUSTER)*secPerCluster+dataStartSec;
    return secNo;
}

int sec2clus(sector_t secNo)
{
    int clusNo;
    clusNo=(secNo-dataStartSec)/secPerCluster+DOS_MIN_CLUSTER;
    return clusNo;
}
所以cluster最小从2开始

dataStartSec=nReservedSecs+secPerFat*nFats
pFatDesc->fatStartSec  = pVolDesc->nReservedSecs     

一些数据在BPB中的偏移:
bootSecNum = DOS_BOOT_SEC_NUM对应物理secNo是nHiddenSecs
nHiddenSecs     <->DOS_BOOT_NHIDDEN_SECS        (0x1C,4)    
rootStartClust  <->DOS32_BOOT_ROOT_START_CLUST  (0x2c,4)
nReservedSecs   <->DOS_BOOT_NRESRVD_SECS        (0x0E,2)
secPerClust     <->DOS_BOOT_SEC_PER_CLUST       (0x0D,1)
secPerFat       <->DOS32_BOOT_SEC_PER_FAT       (0x24,4)
bytesPerSec     <->DOS_BOOT_BYTES_PER_SEC       (0x0b,2)
totalSec        <->DOS_BOOT_LONG_NSECTORS       (0x20,4)
nFats           <->DOS_BOOT_NFATS               (0x10,1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值