在FAT里,需要从目录入口项里找到文件的首簇数,下面这段代码就是实现这样的功能,如下:
#001 ULONG
#002 vfatDirEntryGetFirstCluster (PDEVICE_EXTENSION pDeviceExt,
#003 PDIR_ENTRY pFatDirEntry)
#004 {
#005 ULONG cluster;
#006
根据FAT的类型进行不同的计算。
#007 if (pDeviceExt->FatInfo.FatType == FAT32)
#008 {
32位组成的簇号。
#009 cluster = pFatDirEntry->Fat.FirstCluster |
#010 (pFatDirEntry->Fat.FirstClusterHigh << 16);
#011 }
#012 else if (pDeviceExt->Flags & VCB_IS_FATX)
#013 {
#014 cluster = pFatDirEntry->FatX.FirstCluster;
#015 }
#016 else
#017 {
这里直接使用16位组成的簇号。
#018 cluster = pFatDirEntry->Fat.FirstCluster;
#019 }
#020
#021 return cluster;
#022}