Available disk space (win95)

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.