Home > Visual Basic Classic > Dateisystem > Alle vorhandenen und gültigen Laufwerke ermitteln / auslesen

Alle vorhandenen und gültigen Laufwerke ermitteln / auslesen

Veröffentlicht am 16.09.2008 von Sebastian Krogolewski

Artikelinformationen

Sprache:
Visual Basic 6
Datenbank:
keine

Artikel speichern

del.icioMister WongGoogleLinkarenaYiggSpurlFurl

Artikel bewerten

Bewertng:4.00 / 5 (6 mal bewertet)

Um alle gültigen Laufwerke die auf dem System vorhanden sind zu ermitteln bietet uns die Win API die Funktion GetLogicalDriveStringsA bzw. GetLogicalDriveStringsW aus der Kernel32.Dll.

 

Einbinden der Win API Funktion GetLogicalDriveStringsA bzw. GetLogicalDriveStringsW als GetLogicalDriveStrings aus der Kernel32.Dll:

1
2
Public Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" ( _
    ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

 

GetLogicalDriveStringsA erwartet 2 Parameter:

nBufferLength: größe des reservierten Speichers für die Rückgabe (Ohne abschließendes NULL). Wenn 0 übergeben wird, wird lpBuffer nicht verwendet.

lpBuffer: Ein Zeiger auf den für die Rüchgabe reservierten Speicher. Enthält mehrere Strings die durch NULL getrennt werden, die Strings werden mit einem zusätzlichen NULL abgeschlossen.

 

Rückgabewert:

Bei Erfolg: Tatsächliche länge der Rückgabe welche in lpBuffer zurückgegeben wird, ist der Wert größer als der in nBufferLength, dann ist es die größe des Speichers die benötigt wird. Das abschließende NULL wird nicht berücksichtigt.

Bei Fehlschlag: Wenn die Funktion fehlschlägt wird 0 zurückgeliefert.

 

1
2
3
4
56
7
8
9
1011
12
13
14
1516
Public Function GetLogicalDrives() As String
Dim strDrives As String
Dim RetVal As Long
 
'Erstmal gucken wie groß der String sein muss um alle Daten aufzunehmenRetVal = GetLogicalDriveStrings(0, strDrives)
If (RetVal > 0) Then
    'Größe des Strings neu setzen und Laufwerke ermitteln
    strDrives = String$(RetVal, 0)
    RetVal = GetLogicalDriveStrings(Len(strDrives), strDrives)    If (RetVal <> 0) Then
        'Da der String mit einem vbNullChar abschließt diesen erstmal wegschneiden
        GetLogicalDrives = Left$(strDrives, RetVal - 1)
    End If
End IfEnd Function

 

Hinweis:

Die Funktion liefert einen String mit den Wurzelverzeichnissen, getrennt durch ein vbNullChar, der gültigen Laufwerke auf dem System wieder. Mit der Split Funktion kann man jetzt die einzelnen Werte in ein Array kopieren.

 

Beispiel Aufruf
1
2
3
4
56
7
8
9
Private Sub ShowDrives
Dim strDrives() As String
Dim i As Long
 
strDrives = Split(GetLogicalDrives, vbNullChar)For i = LBound(strDrives) To UBound(strDrives) Step 1
    MsgBox strDrives(i)
Next i
End Sub

Downloads

Suchbegriffe

VB6, Visual Basic, GetLogicalDriveStrings, GetLogicalDriveStringsA, GetLogicalDriveStringsW

Suche