Attribute VB_Name = "ModuleDiskInfo"
Option Explicit
Private Const DRIVE_CDROM = 5
Private Const DRIVE_FIXED = 3
Private Const DRIVE_RAMDISK = 6
Private Const DRIVE_REMOTE = 4
Private Const DRIVE_REMOVABLE = 2
Private Declare Function GetLogicalDriveStrings()Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType()Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetDiskFreeSpaceEx()Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long
Private Type DiskInfomation
RootPath As String
mDiskType As Byte
Size As Currency
End Type
Private Sub GetDriveStrings()Sub GetDriveStrings(ByRef DriveStrings() As String)
Dim i As Long, DirverL As String
i = GetLogicalDriveStrings(0, DirverL)
DirverL = Space$(i)
i = GetLogicalDriveStrings(i, DirverL)
DriveStrings() = Split(Left(DirverL, Len(DirverL) - 2), Chr(0))
End Sub
Private Function GetDiskSpace()Function GetDiskSpace(DiskPath As String) As Currency
Dim tmpSize As Currency
Call GetDiskFreeSpaceEx(DiskPath, tmpSize, GetDiskSpace, tmpSize)
GetDiskSpace = GetDiskSpace * 10000
End Function
Private Sub GetDiskInfo()Sub GetDiskInfo(ByRef DiskInfo() As DiskInfomation)
Dim Str() As String
Call GetDriveStrings(Str())
Dim i As Integer
ReDim DiskInfo(UBound(Str()))
For i = 0 To UBound(Str())
DiskInfo(i).RootPath = Str(i)
DiskInfo(i).mDiskType = GetDriveType(Str(i))
DiskInfo(i).Size = GetDiskSpace(Str(i))
Next i
End Sub
Private Function FindDisk()Function FindDisk(AlltheDisk() As DiskInfomation, TheSearchOne As DiskInfomation) As Boolean
Dim i As Byte
For i = 0 To UBound(AlltheDisk())
If AlltheDisk(i).mDiskType = TheSearchOne.mDiskType _
And AlltheDisk(i).RootPath = TheSearchOne.RootPath _
And AlltheDisk(i).Size = TheSearchOne.Size Then
FindDisk = True
Exit Function
End If
Next i
FindDisk = False
End Function
责任编辑:小草