FAT分区数据结构DBR--->FAT区--->根目录入口点集合---->然后呢????在看ramdisk的代码,其中的fat格式化函数有点疑问,看不懂。//  用总磁盘大小除以扇区大小,得到了分区的扇区数
bootSector->bsSectors     = (USHORT)(devExt->DiskRegInfo.DiskSize /
                                         devExt->DiskGeometry.BytesPerSector);//然后用整个分区的扇区数-DBR扇区数-根目录入口点集合扇区数  / 每簇扇区数  + 2
// 2 是fat区的前两个保留项
//最后得到的是fatEntries fat项的个数?????  这个怎么计算的???数据文件的区域呢?fatEntries =
        (bootSector->bsSectors - bootSector->bsResSectors -
            bootSector->bsRootDirEnts / DIR_ENTRIES_PER_SECTOR) /
                bootSector->bsSecPerClus + 2;

解决方案 »

  1.   

    人呢?
    ssssssssssssssssssssssssssssssssssssssssssssssssss
      

  2.   

    MBR->DBR->FAT->FAT BACKUP->DIR->DATA
      

  3.   

    fat16格式的一个fat表项占多少位?  只占16位? 我觉得是32位哦。麻烦您解答下。谢谢了。
      

  4.   


    只是对文件系统稍微有点了解
    FAT16的一个表项占16位,在磁盘容量小的时候,也可能占12位。因为文件是链式存储的,而表项记录的是文件所在的簇信息,所以如果磁盘的簇数大于4096(12位,0X1000),则表项占16位,反之亦反。
      

  5.   

    qktr ,什么是和在城区   夺在职 在旱叶落归根 
      

  6.   


    链表每节点记下一个即可啊,他的位置由上一个记。
    typedef struct _NODE_
    {
      struct _NODE_ * pNext;
      ...;
    };
      

  7.   

    数据簇呢?由谁来指定?  刚查到FAT16  的FAT表项 是4个字节。 32位。但是按这个逻辑来分析微软的ramdisk还是分析不通。  应该是我没想明白。我再仔细想想吧。分还是给你,谁叫你也是兔子。
      

  8.   

    http://508239.blog.51cto.com/498239/144027http://blog.csdn.net/qianjintianguo/archive/2006/05/08/712590.aspx
      

  9.   

    寒江独钓 118页  如果是FAT16 那么每个FAT表的表象是4个字节
    而且单向链表是有一个数据节点和一个指向节点,
    双向链表是一个数据节点和两个指向节点。
      

  10.   

    那本书好像有点问题,昨天晚上我都没睡好。有电子版,你下个看下。昨天看了下【数据恢复】那本书。里面讲了fat表式利用其表项位置来对应簇。内容来对应下一个项。按照他的逻辑应该就是2字节。而那本书却写的清清楚楚4字节。我靠。但是不管是2字节还是4字节。ramdisk的代码还是有点问题。  或许是抽象的算法我没看懂。哎,迷糊。
      

  11.   

    12位表项结构
    16位表项结构
    簇大小
    http://support.microsoft.com/kb/140365