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

