/* * doDF - do disk info for a specific drive */ static void doDF( int drive ) { struct diskfree_t df; unsigned long long cl_bytes; long total; long avail; long used; drive_type dt; dt = doGetDriveType( drive ); if( dt == DRIVE_NONE ) { return; } if( dt == DRIVE_IS_REMOTE && !includeNetwork ) { return; } if( _dos_getdiskfree( toupper( drive ) - 'A' +1, &df ) == 0 ) { cl_bytes = (long)df.sectors_per_cluster * (long)df.bytes_per_sector; total = (long)df.total_clusters * cl_bytes / 1024L; avail = (long)df.avail_clusters * cl_bytes / 1024L; used = total-avail; printf( " %c %10ld %10ld %10ld %2d%%\n", toupper( drive ), total, used, avail, (100L*used)/total ); } } /* doDF */
long LocalGetFreeSpace( int drv ) /*******************************/ { struct diskfree_t dfre; _dos_getdiskfree( drv, &dfre ); return( dfre.avail_clusters * dfre.sectors_per_cluster * dfre.bytes_per_sector ); }
unsigned long AGSDOS::GetDiskFreeSpaceMB() { struct diskfree_t df; unsigned long freebytes=0; if ( !_dos_getdiskfree(0, &df) ) { freebytes = (unsigned long)df.avail_clusters * (unsigned long)df.bytes_per_sector * (unsigned long)df.sectors_per_cluster; } return freebytes / 1000000; }
long K_avail(char *path) { unsigned drive=0; if (path[1]==':') drive=toupper(path[0])-'A'+1; else _dos_getdrive(&drive); struct diskfree_t f; _dos_getdiskfree(drive,&f); return (long)((long)f.sectors_per_cluster*(long)f.bytes_per_sector/1024)*(long)f.avail_clusters; }
void main (void) { struct diskfree_t diskinfo; long disk_space; if (_dos_getdiskfree(0, &diskinfo)) printf("Error accessing drive C:\n"); else { disk_space = (long) diskinfo.avail_clusters * (long) diskinfo.bytes_per_sector * (long) diskinfo.sectors_per_cluster; printf("Available disk space %ld\n", disk_space); } }
Boolean driveValid(char drive) { drive = toupper(drive); #ifdef __MSDOS__ struct diskfree_t df; return Boolean(_dos_getdiskfree(drive-'@',&df) == 0); #elif defined(__OS2__) FSALLOCATE a; return Boolean(!DosQueryFSInfo(drive - '@', FSIL_ALLOC, &a, sizeof(a))); #elif defined(__NT__) DWORD mask = 0x01 << (drive - 'A'); return (Boolean)(GetLogicalDrives() & mask); #elif defined(__QSINIT__) return (Boolean)(io_ismounted(drive - 'A', 0)); #else #error Unknown platform! #endif }
int getDiskSize(unsigned char drive,unsigned long *size, unsigned long *free, unsigned long *clustersize) { struct diskfree_t data; if(_dos_getdiskfree(drive,&data)==0) { *size=(unsigned long)data.total_clusters*data.bytes_per_sector* data.sectors_per_cluster; *free=(unsigned long)data.avail_clusters*data.bytes_per_sector* data.sectors_per_cluster; *clustersize=(unsigned long)data.bytes_per_sector* data.sectors_per_cluster; return 1; } *size=*free=*clustersize=0; return 0; }
BOOL FloppySpace (int iFloppyIndex) { #ifdef WIN32 #else BYTE Device; DWORD lSpace = 0; struct diskfree_t DiskFree; Device = ((BYTE)szFloppies[iFloppyIndex] - 'A') +1; if (Device < 0 || Device > 26) return (FALSE); if ( _dos_getdiskfree (Device, &DiskFree) ) return (FALSE); lSpace = (DWORD)DiskFree.avail_clusters * DiskFree.sectors_per_cluster * DiskFree.bytes_per_sector; if (lSpace < MIN_SPACE) return (FALSE); #endif return (TRUE); }
LPSTR DriveSize( /************************************************************************/ int iDrive, LPSTR lpSize) { #ifdef WIN32 #else char szString[MAX_STR_LEN]; DWORD dwSize; WORD wType; struct diskfree_t DiskFree; wType = GetExtendedDriveType(iDrive); if ( iDrive != CURRENTDRIVE && (wType == DRIVE_REMOVABLE || wType == DRIVE_CDROM) ) *lpSize = '\0'; else { if ( !_dos_getdiskfree( iDrive+1, &DiskFree ) ) { dwSize = (DWORD)DiskFree.avail_clusters * DiskFree.sectors_per_cluster * DiskFree.bytes_per_sector; SizeToAscii( dwSize, szString ); lstrcpy( lpSize, szString ); lstrcat( lpSize, " / " ); dwSize = (DWORD)DiskFree.total_clusters * DiskFree.sectors_per_cluster * DiskFree.bytes_per_sector; SizeToAscii( dwSize, szString ); lstrcat( lpSize, szString ); } } #endif return( lpSize ); }
unsigned _RTL_FUNC _getdiskfree(unsigned __drive,struct _diskfree_t *__dtable) { return _dos_getdiskfree( __drive, __dtable); }