Option Explicit
Private Declare Function GetVolumeInformation Lib _
"kernel32.dll" Alias "GetVolumeInformationA" (ByVal _
lpRootPathName As String, ByVal lpVolumeNameBuffer As _
String, ByVal nVolumeNameSize As Integer, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength _
As Long, lpFileSystemFlags As Long, ByVal _
lpFileSystemNameBuffer As String, ByVal _
nFileSystemNameSize As Long) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
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 Sub Form_Load()
MsgBox "A:\" & DriveType("A:\")
MsgBox "C:\" & DriveType("C:\")
MsgBox "D:\" & DriveType("D:\")
MsgBox "E:\" & DriveType("E:\")
MsgBox "F:\" & DriveType("F:\")
MsgBox "G:\" & DriveType("G:\")
End Sub
Public Function DriveType(Drive As String) As String
Dim Tipo As Integer
Tipo = GetDriveType(Drive)
Select Case Tipo
Case DRIVE_CDROM
DriveType = "CD-ROM"
Case DRIVE_FIXED
DriveType = "Fixed"
Case DRIVE_RAMDISK
DriveType = "RAM Disk"
Case DRIVE_REMOTE
DriveType = "Remote Disk"
Case DRIVE_REMOVABLE
DriveType = "Removable"
End Select
End Function
Public Function GetSerialNumber(strDrive As String, DiskLabel As String) As String
Dim SerialNum As Long
Dim Res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
Res = GetVolumeInformation(strDrive, Temp1, _
Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
GetSerialNumber = Hex$(SerialNum)
GetSerialNumber = String$(8 - Len(GetSerialNumber), "0") + GetSerialNumber
GetSerialNumber = Left$(GetSerialNumber, 4) + "-" + Mid$(GetSerialNumber, 5)
DiskLabel = Trim0(Temp1)
End Function
Public Function Trim0(ByVal e0 As String)
Dim i As Integer
For i = Len(e0) To 1 Step -1
If Mid$(e0, i, 1) <> Chr$(0) Then Exit For
Next i
Trim0 = Left$(e0, i)
End Function