For all those people who needed a function that returns the disk spaces. The function is called as: Er% = GetDiskSpaces(Unit, DiskSpace) where: -GetDiskSpaces is the name of the function. (declare in in the Global module (VB1.0) or the declarations section of any code module (VB2.0)). -Unit is of Integer type with drive A being 1, drive B being 2 and so on. -DiskSpace of user defined type (see below) will hold the values returned by the function. The function will return the total space on the drive (in clusters), the available (free space) on the drive (in clusters), the number of sectors per cluster and the number of bytes per sector. Use your VB code to make all of the other calculations. The DISKFREE.FRM and DISKFREE.BAS files are for VisualBASIC 2. You will not be able to load these files in VisualBASIC 1. If you do not have access to VB 2.0 do the following: 1. Create a new form Form1. 2. Create the following controls on Form1: Name Caption Label1 Total Space: Label2 Label3 Free Space: Drive1 Command1 &OK 3. Paste the following code in the declarations section of Form1: Sub Command1_Click () Unload Form1 End Sub --- Sub Drive1_Change () 'The Total and the Available disk spaces are shown in Label2 and Label4. 'If interested you can also use the Bytes Per Sector, Sectors Per Cluster, 'the total Disk Clusters and the available Disk Clusters. 'Use the Panel control found in THREED.VBX with the Flood property set 'to create a bar graph type indicator. Dim DiskSpace As DiskFree Dim Unit As Integer Dim dBytesCluster As Double Dim dTemp As Double Unit = Asc(Drive1.Drive) - Asc("a") + 1 Er% = GetDiskSpaces(Unit, DiskSpace) If Er% = 0 Then dBytesCluster = DiskSpace.Bytes_Per_Sector * DiskSpace.Sectors_Per_Cluster dTemp = dBytesCluster * DiskSpace.Total_Clusters Label2.Caption = Format$(dTemp / 1024, "#,##0 KB") dTemp = dBytesCluster * DiskSpace.Avail_Clusters Label4.Caption = Format$(dTemp / 1024, "#,##0 KB") Else Label2.Caption = "Disk Error" Label4.Caption = "Disk Error" End If End Sub --- Sub Form_Load () Drive1_Change End Sub 4. Create a new module named DISKFREE.BAS. 5. Paste the following code in the declarations section of DISKFREE.BAS: Type DiskFree total_clusters As Long avail_clusters As Long sectors_per_cluster As Long bytes_per_sector As Long End Type Declare Function GetDiskSpaces Lib "diskfree.dll" (ByVal wDrive As Integer, DiskSpace As DiskFree) As Integer 6. Press F5 to run. Select various drive from the drive list. When done click the OK button. The C source code is pretty well documented. (There isn't much to it.) John Castravet