devxlogo

Get Useful Disk Information

Get Useful Disk Information

This function returns the hard disk free bytes, total bytes, percentage of free bytes, and used space. Before calling the function, set the first field of the DISKSPACEINFO structure (“RootPath”) to the drive letter:

 Dim dsi As DISKSPACEINFOdsi.RootPath = "C:"GetDiskSpace dsi

The function returns all its results in the other field of the record:

 ' *** Declaratiosn Section ******Declare Function GetDiskFreeSpace Lib _	"kernel32" Alias _	"GetDiskFreeSpaceA" _	(ByVal lpRootPathName As String, _	lpSectorsPerCluster As Long, _	lpBytesPerSector As Long, _	lpNumberOfFreeClusters As Long, _	lpTotalNumberOfClusters As Long) _	As LongType DISKSPACEINFO	RootPath As String * 3	FreeBytes As Long	TotalBytes As Long	FreePcnt As Single	UsedPcnt As SingleEnd Type' ****** Code Module ******Function GetDiskSpace(CurDisk As _	DISKSPACEINFO)	Dim X As Long	Dim SxC As Long, BxS As Long	Dim NOFC As Long, TNOC As Long	X& = GetDiskFreeSpace_		(CurDisk.RootPath, SxC, BxS, _		NOFC, TNOC)	GetDiskSpace = X&	If X& Then		CurDisk.FreeBytes = BxS * _			SxC * NOFC		CurDisk.TotalBytes = BxS * _			SxC * TNOC		CurDisk.FreePcnt = ((CurDisk._			TotalBytes CurDisk._			FreeBytes) / CurDisk._			TotalBytes) * 100		CurDisk.UsedPcnt = _			(CurDisk.FreeBytes / _			CurDisk.TotalBytes) * 100	Else		CurDisk.FreeBytes = 0		CurDisk.TotalBytes = 0		CurDisk.FreePcnt = 0		CurDisk.UsedPcnt = 0	End IfEnd Function

As is, this routine works with drives with a capacity of up to about 2G; for larger disks, you should use Single variables instead.

devx-admin

Share the Post: