DWORD GetLogicalDriveStrings(DWORD DriveNamesSize, LPTSTR DriveNames);
ドライブ名の一覧は、DriveNamesに指定したバッファに、各ドライブ名がNULLで区切られて格納される。終端には、二つのNULLが格納される。
引数の意味は、以下の通り。
DriveNamesSize | (IN) | バッファの大きさ |
DriveNames | (OUT) | ドライブ名の一覧を格納するためのバッファ。 |
戻り値は、バッファに格納されたデータの実際のサイズ。DriveNamesSizeで指定したバッファのサイズが小さすぎるときは、必要なバッファのサイズを返す。関数の実行に失敗した場合、0が返される。
void DispLogicalDriveStrings() { char buf[1000]; DWORD buf_size, cnt; buf_size = GetLogicalDriveStrings(1000, buf); cnt = 0; printf("有効なドライブの一覧:\n"); while(cnt<buf_size) { printf("%s\n", &buf[cnt]); cnt += lstrlen(&buf[cnt])+1; } }
' 有効なドライブ名の一覧を表示 Private Sub DispLogicalDriveStrings() Const DrivesSize As Long = 105 Dim Drives As String * DrivesSize Dim DLetter As String Dim Idx As Long Dim NextDelim As Long Dim Msg As String 'ドライブ名一覧の取得 GetLogicalDriveStrings DrivesSize, Drives Idx = 1 NextDelim = InStr(Idx, Drives, vbNullChar) 'メッセージの作成 Do Msg = Msg & Mid(Drives, Idx, NextDelim - Idx) & vbCr Idx = NextDelim + 1 NextDelim = InStr(Idx, Drives, vbNullChar) Loop While Idx <> NextDelim 'メッセージの表示 MsgBox Msg End Sub