VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 取得Disk Driver List与各个Driver的型态
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:8857, 日期:2001-09-16
 取得Disk Driver List与各个Driver的型态


作者: cww 

Private Declare Function GetDriveType Lib "kernel32" _
   Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetLogicalDriveStrings Lib "kernel32" _
   Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, _
   ByVal lpBuffer As String) As Long
注释:GetDriveType()的传回值意义如下:
注释:0   The drive type cannot be determined.
注释:1   The root directory does not exist.
注释:2   The drive can be removed from the drive.
注释:3   The disk cannot be removed from the drive.
注释:4   The drive is a remote (network) drive.
注释:5   The drive is a CD-ROM drive.
注释:6   The drive is a RAM disk.

Private Sub Command1_Click()
Dim drv() As String, i As Long
Dim DrvType As Long
Call GetAvailDriver(drv())
For i = LBound(drv) To UBound(drv)
    DrvType = GetDriveType(drv(i))
    Select Case DrvType
      Case 2
         Debug.Print drv(i), "软碟"
      Case 3
         Debug.Print drv(i), "硬碟"
      Case 4
         Debug.Print drv(i), "网路磁碟"
      Case 5
         Debug.Print drv(i), "光碟"
      Case 6
         Debug.Print drv(i), "RamDisk"
      Case Else
         Debug.Print drv(i), "不明"
    End Select
Next i
End Sub

注释:取得所有可用的DiskDriver List
Public Sub GetAvailDriver(DriverName() As String)
Dim totlen As Long
Dim buff As String, totDrvCnt As Long
Dim i As Long, tmpstr As String, j As Long
buff = String(255, 0)
totlen = GetLogicalDriveStrings(256, buff)
注释:取得的值如: "a:\"+Chr(0)+"c:\"+Chr(0) + "d:\"+Chr(0) + Chr(0)
注释:而这个例子中传回长度(totlen)是12
buff = Left(buff, totlen)
totDrvCnt = 0
For i = 1 To totlen
   tmpstr = Mid(buff, i, 1)
   If tmpstr = Chr(0) Then
      totDrvCnt = totDrvCnt + 1
   End If
Next i
ReDim DriverName(totDrvCnt - 1)
j = 0
For i = 1 To totDrvCnt
    j = InStr(1, buff, Chr(0))
    DriverName(i - 1) = Left(buff, j - 1)
    buff = Mid(buff, j + 1)
Next i
End Sub