Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Advanced
Aug 1, 1997

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 DISKSPACEINFO
dsi.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 Long

Type DISKSPACEINFO
	RootPath As String * 3
	FreeBytes As Long
	TotalBytes As Long
	FreePcnt As Single
	UsedPcnt As Single
End 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 If
End 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.
Isaias Martinez
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date