To get the amount of available disk space you can call GetDiskFreeSpace or GetDiskFreeSpaceEx.
There are differences between Windows 95, Windows 95 OSR/2 and Windows NT 4.0.
This text is quoted from MSDN Library:
In Windows 95, the existing Win32 function GetDiskFreeSpace may obtain incorrect values for volumes that are larger than 2 gigabytes (GB). In OSR 2, the function GetDiskFreeSpace has been modified to cap the value returned and never reports volume sizes greater than 2 GB. On very large empty volumes, existing applications will see only 2 GB free. If less than 2 GB are free, the correct amount will be returned. Windows 95 OSR 2 and Windows NT 4.0 support the GetDiskFreeSpaceEx function. GetDiskFreeSpaceEx obtains correct values on all platforms for all volumes, including those that are larger than 2 GB. New applications should use the GetDiskFreeSpaceEx function instead of the GetDiskFreeSpace function.
The following code shows how to call GetDiskFreeSpace. This example was submitted by Stuart Morris [stuart@IBS-PUBLIC-SERVICES.CO.UK]
DEFINE VARIABLE iSectorsPerCluster AS INTEGER NO-UNDO. DEFINE VARIABLE iBytesPerSector AS INTEGER NO-UNDO. DEFINE VARIABLE iFreeClusters AS INTEGER NO-UNDO. DEFINE VARIABLE iClusters AS INTEGER NO-UNDO. DEFINE VARIABLE iResult AS INTEGER NO-UNDO. DEFINE VARIABLE iVolName AS CHARACTER NO-UNDO INIT "c:\". PROCEDURE GetDiskFreeSpaceA EXTERNAL "kernel32.dll": DEFINE INPUT PARAM lpRootPathName AS CHARACTER. DEFINE OUTPUT PARAM opSectorsPerCluster AS LONG. DEFINE OUTPUT PARAM opBytesPerSector AS LONG. DEFINE OUTPUT PARAM opFreeClusters AS LONG. DEFINE OUTPUT PARAM opClusters AS LONG. DEFINE RETURN PARAM bResult AS LONG. END PROCEDURE. RUN GetDiskFreeSpaceA(INPUT iVolName, OUTPUT iSectorsPerCluster, OUTPUT iBytesPerSector, OUTPUT iFreeClusters, OUTPUT iClusters, OUTPUT iResult ). MESSAGE "SectorsPerCluster = " iSectorsPerCluster SKIP "BytesPerSector = " iBytesPerSector SKIP "FreeClusters = " iFreeClusters SKIP "Clusters = " iClusters SKIP(1) "BytesPerCluster = " (iSectorsPerCluster * iBytesPerSector) SKIP "DiskSpaceFree = " ((iFreeClusters * iSectorsPerCluster) * iBytesPerSector) VIEW-AS ALERT-BOX INFO TITLE "disk " + iVolname.