ドライブの種類を調べる

指定されたドライブがどんな種類か調べるテクニックです。

サンプル(32bit) ダウンロード

'ドライブの種類のチェックAPI
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Const DRIVE_REMOVABLE = 2
Public Const DRIVE_FIXED = 3
Public Const DRIVE_REMOTE = 4
Public Const DRIVE_CDROM = 5
Public Const DRIVE_RAMDISK = 6



Private Sub FORMAT_SYORI(DRIVE_STR As String)
    
   'フォーマットダイアログの表示
   
   Dim sWORK_STR As String
   Dim nDRIVE_NO As Long
   Dim nRC As Long
   
   'ドライブ名のA-Zチェック
    sWORK_STR = StrConv(Left$(Trim$(DRIVE_STR), 1), vbUpperCase)
    If (Asc(sWORK_STR) < 65) Or (90 < Asc(sWORK_STR)) Then
       Beep
       MsgBox "ドライブ名が不正です。" + Chr$(10) + Chr$(10) + "ドライブ名は A〜Z のみ指定できます。", vbCritical, "ドライブ名不正!!"
       Exit Sub
    End If
     
    'リムーバブル ディスク チェック
    If GetDriveType(sWORK_STR + ":\") <> DRIVE_REMOVABLE Then
       Beep
       MsgBox "ドライブ " + sWORK_STR + ": はリームバブル ディスクではありません。", vbExclamation, sSYORI_NAME + "[HD等は初期化できません]"
       Exit Sub
    End If
   
    'ドライブ名→ドライブ番号に変更
    nDRIVE_NO = Asc(sWORK_STR) - 65
    
    Screen.MousePointer = vbHourglass
    'フォーマットダイアログの表示
    nRC = SHFormatDrive(Me.hwnd, nDRIVE_NO, 0, 1)
    Screen.MousePointer = vbDefault

End Sub

サンプル解説

GetDriveType関数で指定されたドライブの種類を調べています。

引数は次の通りです。
(引数の名前は、Declare Functionで指定したものです)

メンバー I/O 説明
nDrive In ドライブ名
必ず、調べたいドライブのルートパスを指定します。(例:c:\)

戻り値は次の通りです。

DRIVE_REMOVABLE FD・MO等のリムーバブルメディア
DRIVE_FIXED ハードディスク
DRIVE_REMOTE ネットワークドライブ
DRIVE_CDROM CD−ROMドライブ
DRIVE_RAMDISK RAMドライブ

サンプルでは、指定されたドライブがリムーバブルメディアのドライブかどうかを調べています。


[ Window Close ]