vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
Rubrik: Dateisystem09.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, WinMEViews:  6.601 

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:
lpRootPathNameErwartet den Laufwerksbuchstaben, von welchem die Informationen eingeholt werden sollen.
lpVolumeNameBufferGibt den Laufwerksnamen oder dnm Namen des Mediums im Laufwerk zurück.
nVolumeNameSizeGröß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)
lpFileSystemNameBufferGibt das verwendete Dateisystems zurück (FAT 16, FAT 32, CDFS, NTFS, etc.)
nFileSystemNameSizeGröß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

Diese Seite wurde bereits 6.601 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2014 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.

Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel