How to know the free size of system drive
0赞[Description]
How to know the free size of system drive and public drive
[Solution]
1. In run time, you could use FS_GetDiskInfo with FS_DI_FREE_SPACE flag to get current free space of
each drive.icfans
2. A log file "mcu\build\<proj>\log\ckSysDrv.log" tells the free size in the 1st boot-up time.
2.1. For System Drive, free size in system drive is showed in the bottom of log file in
consideration of quota configurations. E.g., 2610 clusters are left (5220.0 KB = 5.10 MB).
2.2. For Public Drive, free size is described in "FS First Drive Size"
3. this is sample code to Calculate th free size of drive :
kal_int64 get_memory_card_free_space_example()
{
kal_int32 drive_letter;
kal_int32 cluster_size;
kal_int32 result;
kal_int64 free_space = 0;
kal_int32 accessible;
kal_int32 busy;
WCHAR drive_path[4] = { 'X', ':', '\\', 0 } ;
FS_DiskInfo diskinfo;
drive_letter = FS_GetDrive ( FS_DRIVE_V_REMOVABLR , 1,
FS_NO_ALT_DRIVE ) ;
if (drive_letter > 0 )
{
drive_path[0] = drive_letter ;
accessible = FS_GetDevStatus (drive_letter,
FS_MOUNT_STATE_ENUM ) ; // 确认drive 是ready
if ( accessible < 0 ) return 0 ;
busy = FS_GetDevStatus (drive_letter, FS_FEATURE_STATE_ENUM
) ; // 确认drive is not busy
if ( busy < 0 ) return 0 ;
result = FS_GetDiskInfo (
drive_path,&diskinfo,FS_DI_FREE_SPACE) ;
if ( result < 0 ) { ..... }
cluster_size = diskinfo.SectorsPerCluster *
diskinfo.BytesPerSector;
free_space = diskinfo.FreeClusters ;
free_apce = free_space * cluster_size;
return free_space ;
}
return 0 ;
