Declare Function GetVolumeInformation Lib "Kernel32" 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
GetVolumeInformation определяет серийный номер, метку диска и его файловую систему. Если Вы пытаетесь получить информацию относительно дисковода для гибких дискет, который не имеет гибкого диска или CD-ROM, в котором нет компакт-диска, система отображает окно с сообщением,что нужно вставить гибкий диск или компакт-диск. Чтобы предотвратить систему от отображения этого окна сообщений, вызовите функцию SetErrorMode с параметром SEM_FAILCRITICALERRORS.
FS_CASE_IS_PRESERVED | При записи на диск сохраняется регистр букв в имени файла |
FS_CASE_SENSITIVE | Файловая система поддерживает поиск файлов с учетом регистра букв в именах |
FS_UNICODE_STORED_ON_DISK | Файловая система поддерживает хранение на диске имен файлов в UNICODE |
FS_PERSISTENT_ACLS | Файловая система способна оперировать со списками контроля доступа(ACL). Доступно только в NTFS |
FS_FILE_COMPRESSION | Файловая система поддерживает сжатие файлов |
FS_VOL_IS_COMPRESSED | Если этот флаг установлен, то том, информация о котором запрашивается, был подвергнут сжатию (напр. DoubleSpace) |
FILE_NAMED_STREAMS | Файловая система поддерживает именованные потоки |
FILE_SUPPORTS_ENCRYPTION | Файловая система поддерживает Encrypted File System (EFS) |
FILE_SUPPORTS_OBJECT_IDS | Файловая система поддерживает идентификаторы объектов |
FILE_SUPPORTS_REPARSE_POINTS | Файловая система поддерживает точки повторного разбора |
FILE_SUPPORTS_SPARSE_FILES | Файловая система поддерживает разреженные файлы |
FILE_VOLUME_QUOTAS | Файловая система поддерживает дисковые квоты |
Dim Serial As Long, VName As String, FSName As String
VName = String$(255, Chr$(0))
FSName = String$(255, Chr$(0))
' получаем информацию о диске
GetVolumeInformation "C:\", VName, 255, Serial, 0, 0, FSName, 255
VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)
FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)
Debug.Print "Имя диска "; VName
Debug.Print "Файловая система "; FSName
Debug.Print "Серийный номер диска "; Trim(Str$(Serial))