Поделиться через


Функция GetVolumeInformationA (fileapi.h)

Извлекает сведения о файловой системе и томе, связанном с указанным корневым каталогом.

Чтобы указать дескриптор при получении этих сведений, используйте функцию GetVolumeInformationByHandleW.

Чтобы получить текущее состояние сжатия файла или каталога, используйте FSCTL_GET_COMPRESSION.

Синтаксис

BOOL GetVolumeInformationA(
  [in, optional]  LPCSTR  lpRootPathName,
  [out, optional] LPSTR   lpVolumeNameBuffer,
  [in]            DWORD   nVolumeNameSize,
  [out, optional] LPDWORD lpVolumeSerialNumber,
  [out, optional] LPDWORD lpMaximumComponentLength,
  [out, optional] LPDWORD lpFileSystemFlags,
  [out, optional] LPSTR   lpFileSystemNameBuffer,
  [in]            DWORD   nFileSystemNameSize
);

Параметры

[in, optional] lpRootPathName

Указатель на строку, содержащую корневой каталог тома, который нужно описать.

Если этот параметр null, используется корневой каталог текущего каталога. Требуется обратная косая черта. Например, вы указываете \\MyServer\MyShare как \\MyServer\MyShare\, или диск C как "C:\".

[out, optional] lpVolumeNameBuffer

Указатель на буфер, получающий имя указанного тома. Размер буфера указывается параметром nVolumeNameSize.

[in] nVolumeNameSize

Длина буфера имени тома в TCHARs. Максимальный размер буфера составляет MAX_PATHs+1.

Этот параметр игнорируется, если буфер имени тома не указан.

[out, optional] lpVolumeSerialNumber

Указатель на переменную, которая получает серийный номер тома.

Этот параметр может быть null, если серийный номер не требуется.

Эта функция возвращает серийный номер тома, который операционная система назначает при форматировании жесткого диска. Чтобы программно получить серийный номер жесткого диска, который назначает производитель, используйте свойство инструментария управления Windows (WMI) Win32_PhysicalMediaSerialNumber.

[out, optional] lpMaximumComponentLength

Указатель на переменную, которая получает максимальную длину в TCHARs, компонента имени файла, который поддерживает указанная файловая система.

Компонент имени файла — это часть имени файла между обратными косыми чертами.

Значение, хранящееся в переменной, которая *lpMaximumComponentLength указывает, что указанная файловая система поддерживает длинные имена. Например, для файловой системы FAT, поддерживающей длинные имена, функция сохраняет значение 255, а не предыдущий индикатор 8.3. Длинные имена также могут поддерживаться в системах, использующих файловую систему NTFS.

[out, optional] lpFileSystemFlags

Указатель на переменную, которая получает флаги, связанные с указанной файловой системой.

Этот параметр может быть одним или несколькими из следующих флагов. Однако FILE_FILE_COMPRESSION и FILE_VOL_IS_COMPRESSED являются взаимоисключающими.

Ценность Значение
FILE_CASE_SENSITIVE_SEARCH
0x00000001
Указанный том поддерживает имена файлов с учетом регистра.
FILE_CASE_PRESERVED_NAMES
0x00000002
Указанный том поддерживает сохраненный регистр имен файлов при расположении имени на диске.
FILE_UNICODE_ON_DISK
0x00000004
Указанный том поддерживает Юникод в именах файлов, как они отображаются на диске.
FILE_PERSISTENT_ACLS
0x00000008
Указанный том сохраняет и применяет списки управления доступом (ACL). Например, файловая система NTFS сохраняет и применяет списки управления доступом, а файловая система FAT не поддерживает.
FILE_FILE_COMPRESSION
0x00000010
Указанный том поддерживает сжатие на основе файлов.
FILE_VOLUME_QUOTAS
0x00000020
Указанный том поддерживает квоты дисков.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
Указанный том поддерживает разреженные файлы.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
Указанный том поддерживает точки повторного анализа.

ReFS: ReFS поддерживает точки повторного анализа, но не индексирует их, поэтому FindFirstVolumeMountPoint и FindNextVolumeMountPoint не будут работать должным образом.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
Файловая система поддерживает удаленное хранилище.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
При успешной очистке файловая система возвращает сведения, описывающие дополнительные действия, выполняемые во время очистки, например удаление файла. Фильтры файловой системы могут изучить эти сведения в обратном вызове после очистки.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
Файловая система поддерживает операции удаления и переименования в стиле POSIX.
FILE_VOLUME_IS_COMPRESSED
0x00008000
Указанный том является сжатым томом, например том DoubleSpace.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
Указанный том поддерживает идентификаторы объектов.
FILE_SUPPORTS_ENCRYPTION
0x00020000
Указанный том поддерживает зашифрованную файловую систему (EFS). Дополнительные сведения см. в шифрования файлов.
FILE_NAMED_STREAMS
0x00040000
Указанный том поддерживает именованные потоки.
FILE_READ_ONLY_VOLUME
0x00080000
Указанный том доступен только для чтения.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
Указанный том поддерживает одну последовательную запись.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
Указанный том поддерживает транзакции. Дополнительные сведения см. в разделе О KTM.
FILE_SUPPORTS_HARD_LINKS
0x00400000
Указанный том поддерживает жесткие ссылки. Дополнительные сведения см. в жестких ссылок и соединений.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается до Windows Server 2008 R2 и Windows 7.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
Указанный том поддерживает расширенные атрибуты. Расширенный атрибут — это часть метаданных, относящихся к приложению, которые приложение может связать с файлом и не является частью данных файла.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается до Windows Server 2008 R2 и Windows 7.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
Файловая система поддерживает открытие с помощью FileID. Дополнительные сведения см. в FILE_ID_BOTH_DIR_INFO.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается до Windows Server 2008 R2 и Windows 7.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
Указанный том поддерживает журналы обновления последовательности (USN). Дополнительные сведения см. в записей журнала изменений.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается до Windows Server 2008 R2 и Windows 7.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
Файловая система поддерживает потоки целостности .
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
Указанный том поддерживает совместное использование логических кластеров между файлами в одном томе. Файловая система перераспределяет записи в общие кластеры. Указывает, что FSCTL_DUPLICATE_EXTENTS_TO_FILE является поддерживаемой операцией.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
Файловая система отслеживает, содержит ли каждый кластер файла допустимые данные (из явных операций записи файлов или автоматических нулей) или недопустимых данных (еще не записаны в или ноль). Файловые системы, использующие разреженную длину данных (VDL), не хранят допустимую длину данных и не требуют, чтобы допустимые данные были рядом в файле.
FILE_DAX_VOLUME
0x20000000
Указанный том — это том прямого доступа (DAX).

Примечание :
Этот флаг появился в Windows 10 версии 1607.
FILE_SUPPORTS_GHOSTING
0x40000000
Файловая система поддерживает призраки.

[out, optional] lpFileSystemNameBuffer

Указатель на буфер, который получает имя файловой системы, например файловую систему FAT или файловую систему NTFS. Размер буфера задается параметром nFileSystemNameSize.

[in] nFileSystemNameSize

Длина буфера имени файловой системы в TCHARs. Максимальный размер буфера составляет MAX_PATH+1.

Этот параметр игнорируется, если буфер имени файловой системы не указан.

Возвращаемое значение

Если извлекаются все запрошенные сведения, возвращаемое значение ненулевое.

Если не все запрошенные сведения извлекаются, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Когда пользователь пытается получить сведения о диске, который не имеет диска floppy, или диска CD-ROM, который не имеет компакт-диска, система отображает окно сообщения для пользователя, чтобы вставить диск или компакт-диск соответственно. Чтобы предотвратить отображение этого поля сообщения системой, вызовите функцию SetErrorMode с SEM_FAILCRITICALERRORS.

Флаг FILE_VOL_IS_COMPRESSED является единственным индикатором сжатия на основе томов. Имя файловой системы не изменяется, чтобы указать сжатие, например, этот флаг возвращается в томе DoubleSpace. Если сжатие основано на томе, весь том сжимается или не сжимается.

Флаг FILE_FILE_COMPRESSION указывает, поддерживает ли файловая система сжатие на основе файлов. При сжатие на основе файлов отдельные файлы можно сжимать или не сжимать.

Флаги FILE_FILE_COMPRESSION и FILE_VOL_IS_COMPRESSED являются взаимоисключающими. Оба бита не могут быть возвращены.

Максимальное значение длины компонента, хранящееся в lpMaximumComponentLength, является единственным показателем того, что том поддерживает более длинные имена файловой системы FAT (или другой файловой системы). Имя файловой системы не изменяется, чтобы указать поддержку длинных имен файлов.

Функция getCompressedFileSize получает сжатый размер файла. Функция GetFileAttributes может определить, сжимается ли отдельный файл.

Если путь указывает на символьную ссылку, функция возвращает сведения о томе для целевого объекта.

Начиная с Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технологии Поддержанный
Протокол SMB 3.0 Нет
Отработка отказа SMB 3.0 (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Отказоустойчивая файловая система (ReFS) Да

SMB не поддерживает функции управления томами.

Операции с транзакцией

Если том поддерживает транзакции файловой системы, функция возвращает FILE_SUPPORTS_TRANSACTIONS в lpFileSystemFlags.

Заметка

Заголовок fileapi.h определяет GetVolumeInformation как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка fileapi.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

О KTM

шифрование файлов

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

функций управления томами