InfoDisk




Private Declare Function GetVolumeInformation Lib "kernel32" _
Alias "GetVolumeInformationA" _
(ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpfileSystemFlags As Long, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
Private 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
' new public function, place in a BAS file as well (global module)

Public Function GetDriveInfo(filePath As String) As String
Dim lpVolumeNameBuffer As String
Dim nVolumeNameSize As String
Dim lpVolumeSerialNumber As Long
Dim lpMaximumComponentLength As Long
Dim lpfileSystemFlags As Long
Dim lpFileSystemNameBuffer As String
Dim nFileSystemNameSize As Long
Dim lpSectorsPerCluster As Long
Dim lpBytesPerSector As Long
Dim lpNumberOfFreeClusters As Long
Dim lpTotalNumberOfClusters As Long
Dim rtval As Long
lpVolumeNameBuffer = Space(255)
nVolumeNameSize = 256
lpFileSystemNameBuffer = Space(255)
nFileSystemNameSize = 256
rtval = GetVolumeInformation(filePath, _
lpVolumeNameBuffer, _
nVolumeNameSize, _
lpVolumeSerialNumber, _
lpMaximumComponentLength, _
lpfileSystemFlags, _
lpFileSystemNameBuffer, _
nFileSystemNameSize)
rtval = GetDiskFreeSpace(filePath, _
lpSectorsPerCluster, _
lpBytesPerSector, _
lpNumberOfFreeClusters, _
lpTotalNumberOfClusters)

GetDriveInfo = "Volume Serial Number: " & lpVolumeSerialNumber &
Chr(13) & Chr(10) & _
"Volume Size In Bytes: " & lpTotalNumberOfClusters *
lpSectorsPerCluster * lpBytesPerSector & " bytes" & Chr(13) & Chr(10) & _
"Volume Free Space In Bytes: " & lpNumberOfFreeClusters *
lpSectorsPerCluster * lpBytesPerSector & " bytes"

End Function











( infodisk.html )- by Paolo Puglisi - Modifica del 17/12/2023