Public Function GetRootDrives() As sDrive()
Dim drives As String()
Dim mDrives() As sDrive, i As Integer
Dim disk As System.Management.ManagementObject
drives = Environment.GetLogicalDrives
ReDim mDrives(drives.GetUpperBound(0))
Dim str As String
For i = 0 To drives.GetUpperBound(0)
str = drives(i)
Try
With mDrives(i)
..Name = drives(i)
Dim strDrive As String
Dim t As UInt32
strDrive = "Win32_LogicalDisk='" & str.Substring(0, 2) & "'"
disk = New Management.ManagementObject(strDrive)
t = disk("DriveType")
Select Case t.ToString
Case "2"
..driveType = sDrive.edriveType.Removable
Case "3"
..driveType = sDrive.edriveType.Fixed
Case "4"
..driveType = sDrive.edriveType.Removable
Case "5"
..driveType = sDrive.edriveType.CdRom
Case "6"
..driveType = sDrive.edriveType.RamDisk
Case Else
..driveType = sDrive.edriveType.Unknown
End Select
End With
Catch ex As Exception
Debug.WriteLine(ex.ToString)
End Try
Next
Return mDrives
End Function