Changeset 1227


Ignore:
Timestamp:
09/30/09 03:21:28 (5 years ago)
Author:
lowjoel
Message:

Detect whether FAT12 or FAT16 is used when FAT is returned from GetVolumeInformation?.

Location:
trunk/eraser6
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser6/Eraser.Util.FileSystem/Fat16Api.cpp

    r1226 r1227  
    3131    { 
    3232        //Sanity checks: check that this volume is FAT16! 
    33         if (IsFat12()) 
     33        if (IsFat12() || info->VolumeFormat == L"FAT12") 
    3434            throw gcnew ArgumentException(L"The volume provided is not a FAT16 volume."); 
    3535    } 
     
    3838    { 
    3939        //Sanity checks: check that this volume is FAT16! 
    40         if (IsFat12()) 
     40        if (IsFat12() || info->VolumeFormat == L"FAT12") 
    4141            throw gcnew ArgumentException(L"The volume provided is not a FAT16 volume."); 
    4242    } 
  • trunk/eraser6/Eraser.Util/VolumeInfo.cs

    r1223 r1227  
    119119                VolumeLabel = volumeName.ToString(); 
    120120                VolumeFormat = fileSystemName.ToString(); 
     121 
     122                //Determine whether it is FAT12 or FAT16 
     123                if (VolumeFormat == "FAT") 
     124                { 
     125                    uint clusterSize, sectorSize, freeClusters, totalClusters; 
     126                    if (KernelApi.NativeMethods.GetDiskFreeSpace(VolumeId, out clusterSize, 
     127                        out sectorSize, out freeClusters, out totalClusters)) 
     128                    { 
     129                        if (totalClusters <= 0xFF0) 
     130                            VolumeFormat += "12"; 
     131                        else 
     132                            VolumeFormat += "16"; 
     133                    } 
     134                } 
    121135            } 
    122136        } 
Note: See TracChangeset for help on using the changeset viewer.