Rubrik: Dateisystem | 09.05.01 |
GetVolumeInformation-Funktion Diese Funktion gibt Informationen über ein bestimmtes Laufwerk zurück, wie z.B. Typ des Dateisystems, Seriennummer, Laufwerksname... | ||
Betriebssystem: Win95, Win98, WinNT, Win2000, WinME | Views: 14.649 |
Beschreibung:
Diese Funktion gibt Informationen über ein bestimmtes Laufwerk zurück, wie z.B. Typ des Dateisystems, Seriennummer, Laufwerksname oder des Mediums, welches sich in dem Laufwerk.
Deklaration:
Declare Function GetVolumeInformation Lib "kernel32.dll" _ Alias "GetVolumeInformationA" ( _ ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, _ ByVal nVolumeNameSize As Long, _ lpVolumeSerialNumber As Long, _ lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, _ ByVal lpFileSystemNameBuffer As String, _ ByVal nFileSystemNameSize As String) As Long
Parameter:
lpRootPathName | Erwartet den Laufwerksbuchstaben, von welchem die Informationen eingeholt werden sollen. |
lpVolumeNameBuffer | Gibt den Laufwerksnamen oder dnm Namen des Mediums im Laufwerk zurück. |
nVolumeNameSize | Größe des Stringbuffers lpVolumeNameBuffer in Bytes. |
lpVolumeSerialNumber | (Long) Gibt die Seriennummer des Laufwerks/des Mediums im Laufwerk zurück. |
lpMaximumComponentLength | (Long) Gibt die maximale Länge der erlaubten Pfad- und Dateinamen zurück. |
lpFileSystemFlags | (Long) erwartet eine "Long" Gibt die Laufwerks-Eigenschaften zurück (siehe nachfolgend lpFileSystemFlags-Konstanten) |
lpFileSystemNameBuffer | Gibt das verwendete Dateisystems zurück (FAT 16, FAT 32, CDFS, NTFS, etc.) |
nFileSystemNameSize | Größe des Stringbuffers lpFileSystemNameBuffer in Bytes |
lpFileSystemFlags Konstanten:
FS_CASE_IS_PRESERVED Dateisystem hält die Groß-/Kleinschreibung strickt ein FS_CASE_SENSITIVE Das Dateisystem kann bei einer Suche nach Groß-/Kleinschreibung unterscheiden FS_UNICODE_STORED_ON_DISK Dateinamen werden als Unicode-Strings gespeichert FS_PERSISTENT_ACLS Das Dateisystem speichern Zugriffskontroll-Listen (ACL) FS_FILE_COMPRESSION Das Dateisystem unterstützt dateibasierendes Komprimieren. FS_VOLUME_IS_COMPRESSED Das Dateisystem ist komprimiert (z.B. mit DoubleSpace) FILE_NAMED_STREAMS Das Dateisystem unterstützt Dateistreams FILE_SUPPORTS_ENCRYPTION Das Dateisystem unterstützt verschlüsselte Dateisysteme (EFS) FILE_SUPPORTS_OBJECT_IDS Das Dateisystem unterstützt Objekte ID's FILE_SUPPORTS_REPARSE_POINTS Das Dateisystem unterstüstzt Reparse-Punkte FILE_SUPPORTS_SPARSE_FILES Das Dateisystem unterstützt Sparse-Dateien FILE_VOLUME_QUOTAS Das Dateisystem unterstützt Laufwerksanteile Konstanten Deklaration: Const FS_CASE_IS_PRESERVED = &H2 Const FS_CASE_SENSITIVE = &H1 Const FS_UNICODE_STORED_ON_DISK = &H4 Const FS_PERSISTENT_ACLS = &H8 Const FS_FILE_COMPRESSION = &H10 Const FS_VOLUME_IS_COMPRESSED = &H8000 Const FILE_NAMED_STREAMS = &H40000 Const FILE_SUPPORTS_ENCRYPTION = &H20000 Const FILE_SUPPORTS_OBJECT_IDS = &H10000 Const FILE_SUPPORTS_REPARSE_POINTS = &H80 Const FILE_SUPPORTS_SPARSE_FILES = &H40 Const FILE_VOLUME_QUOTAS = &H20
Rückgabewert:
War der Funktionsaufruf erfolgreich wird ein Wert ungleich 0 zurückgegeben. Tritt ein Fehler auf, ist der Rückgabewert "0". Erweiterte Fehler-Informationen können mit der GetLastError-Funktion abgefragt werden.
Beispiel:
Private Declare Function GetVolumeInformation Lib "kernel32.dll" _ Alias "GetVolumeInformationA" ( _ ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, _ ByVal nVolumeNameSize As Long, _ lpVolumeSerialNumber As Long, _ lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, _ ByVal lpFileSystemNameBuffer As String, _ ByVal nFileSystemNameSize As Long) As Long Private Const FS_CASE_IS_PRESERVED = &H2 Private Const FS_CASE_SENSITIVE = &H1 Private Const FS_UNICODE_STORED_ON_DISK = &H4 Private Const FS_PERSISTENT_ACLS = &H8 Private Const FS_FILE_COMPRESSION = &H10 Private Const FS_VOLUME_IS_COMPRESSED = &H8000 Private Const FILE_NAMED_STREAMS = &H40000 Private Const FILE_SUPPORTS_ENCRYPTION = &H20000 Private Const FILE_SUPPORTS_OBJECT_IDS = &H10000 Private Const FILE_SUPPORTS_REPARSE_POINTS = &H80 Private Const FILE_SUPPORTS_SPARSE_FILES = &H40 Private Const FILE_VOLUME_QUOTAS = &H20
Private Sub Command1_Click () Dim Retval As Long, PufferFlags As Long Dim PufferMaxFileLen As Long, PufferSerial As Long Dim PufferName As String, PufferFAT As String Dim TmpSN As String PufferName = Space(256) PufferFAT = Space(256) Retval = GetVolumeInformation("c:", PufferName, 256&, PufferSerial, _ PufferMaxFileLen, PufferFlags, PufferFAT, 256&) If Retval <> 0 Then Debug.Print "Laufwerksinformationen Laufwerk C:" Debug.Print "------------------------------------------------------" Debug.Print "Name: " & Left$(PufferName, InStr(1, PufferName, vbNullChar) - 1) Debug.Print "FAT: " & Left$(PufferFAT, InStr(1, PufferFAT, vbNullChar) - 1) Debug.Print "Max. DateiNamenlänge: " & CStr(PufferMaxFileLen) & " Zeichen" ' Seriennummer berechnen TmpSN = Trim(Hex(PufferSerial)) TmpSN = String(8 - Len(TmpSN), "0") & TmpSN TmpSN = Left$(TmpSN, 4) & "-" & Right$(TmpSN, 4) Debug.Print "Seriennummer: " & TmpSN ' Systemeigenschaften überprüfen Debug.Print "Das Laufwerk: " If (PufferFlags And FS_VOLUME_IS_COMPRESSED) Then Debug.Print " - ist komprimiert" Else Debug.Print " - ist nicht komprimiert" End If If (PufferFlags And FS_CASE_IS_PRESERVED) Then Debug.Print " - unterscheidet zwischen Groß-/Kleinschreibung " End If If (PufferFlags And FILE_SUPPORTS_ENCRYPTION) Then Debug.Print " - unterstützt Encrypted File System (EFS)" End If ' und so weiter... End If End Sub