Dateisystem-Typ
Ermitteln, welches Dateisystem verwendet wird.
Man hat es heutzutage meist mit einer Vielzahl unterschiedlicher Dateisysteme, wie FAT, FAT32, NTFS und anderen zu tun. Mit einer kleinen Funktion, können Sie feststellen, mit welchem Dateisystem gearbeitet wird.
Heutzutage trifft man auf eine Vielzahl unterschiedlicher Dateisysteme, wie FAT, FAT32, NTFS und andere. Mit der API Funktion GetVolumeInformation, können Sie ermitteln, mit welchem Dateisystem gearbeitet wird. Zur einfacheren Anwendung, wird der Aufruf in der Funktion "FileSystemType" gekapselt. Als Parameter übergeben Sie den Pfad von dem Sie den Name des Dateisystems ermitteln möchten. Dabei ist es egal, ob dies ein lokaler Pfad oder ein UNC Pfad ist. Schlägt die Funktion fehl, wird ein abfangbarer Fehler ausgelöst:
Private Declare Function GetVolumeInformation Lib "kernel32" _ Alias "GetVolumeInformationA" (_ ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, _ ByVal nVolumeNameSize As Long, _ ByRef lpVolumeSerialNumber As Long, _ ByRef lpMaximumComponentLength As Long, ByRef lpFileSystemFlags As Long, _ ByVal lpFileSystemNameBuffer As String, _ ByVal nFileSystemNameSize As Long _ ) As Long Private Const ERROR_PATH_NOT_FOUND As Long = 3& Private Const ERROR_NOT_READY As Long = 21& Private Const ERROR_BAD_NETPATH As Long = 53& Public Function FileSystemType(ByVal RootPath As String) As String Dim lRet As Long Dim lFileSystem As String Dim lSlashCount As Integer Dim lUNCRoot As Long If Left$(RootPath, 2) <> "\\" Then RootPath = Left$(RootPath, 1) & ":\" Else If Right$(RootPath, 1) <> "\" Then RootPath = RootPath & "\" End If lUNCRoot = 2 For lSlashCount = 1 To 2 lUNCRoot = InStr(lUNCRoot + 1, RootPath, "\") Next If CBool(lUNCRoot) Then RootPath = Left$(RootPath, lUNCRoot) End If End If lFileSystem = Space$(16) lRet = GetVolumeInformation(RootPath, vbNullString, 0, 0, 0, 0, _ lFileSystem, Len(lFileSystem)) If CBool(lRet) Then FileSystemType = Left$(lFileSystem, _ InStr(1, lFileSystem, vbNullChar) - 1) Else Select Case Err.LastDllError Case ERROR_BAD_NETPATH Err.Raise 76 ' Pfad nicht gefunden Case ERROR_PATH_NOT_FOUND Err.Raise 68 ' Gerät nicht verfügbar Case ERROR_NOT_READY Err.Raise 71 ' Datenträger nicht bereit Case Else Err.Raise 5 ' Ungültiger Prozeduraufruf/Argument End Select End If End Function
Download
- Modul modFileSystemType und Beispielprojekt (filesystem.zip - 3 KB)