структура FILE_FS_ATTRIBUTE_INFORMATION (ntifs.h)
Структура FILE_FS_ATTRIBUTE_INFORMATION используется для запроса сведений о атрибутах файловой системы.
Синтаксис
typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
ULONG FileSystemAttributes;
LONG MaximumComponentNameLength;
ULONG FileSystemNameLength;
WCHAR FileSystemName[1];
} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
Члены
FileSystemAttributes
Битовая маска флагов, указывающая атрибуты указанной файловой системы, в качестве совместимого сочетания следующих флагов.
Ценность | Значение |
---|---|
FILE_CASE_SENSITIVE_SEARCH (0x00000001) | Файловая система поддерживает имена файлов с учетом регистра. |
FILE_CASE_PRESERVED_NAMES (0x00000002) | Файловая система сохраняет регистр имен файлов при расположении имени на диске. |
FILE_UNICODE_ON_DISK (0x00000004) | Файловая система поддерживает Юникод в именах файлов. |
FILE_PERSISTENT_ACLS (0x00000008) | Файловая система сохраняет и применяет списки управления доступом (списки управления доступом). |
FILE_FILE_COMPRESSION (0x00000010) | Файловая система поддерживает сжатие на основе файлов. Этот флаг несовместим с флагом FILE_VOLUME_IS_COMPRESSED. Этот флаг не влияет на передачу данных по сети. |
FILE_VOLUME_QUOTAS (0x00000020) | Файловая система поддерживает квоты на пользователя. |
FILE_SUPPORTS_SPARSE_FILES (0x00000040) | Файловая система поддерживает разреженные файлы. |
FILE_SUPPORTS_REPARSE_POINTS (0x00000080) | Файловая система поддерживает точки повторного анализа. |
FILE_SUPPORTS_REMOTE_STORAGE (0x00000100) | Файловая система поддерживает удаленное хранилище. |
FILE_RETURNS_CLEANUP_RESULT_INFO (0x00000200) | При успешной очистке файловая система возвращает сведения, описывающие дополнительные действия, выполняемые во время очистки, например удаление файла. Фильтры файловой системы могут изучить эти сведения в обратном вызове после очистки. |
FILE_SUPPORTS_POSIX_UNLINK_RENAME (0x00000400) | Файловая система поддерживает операции удаления и переименования в стиле POSIX. |
FILE_VOLUME_IS_COMPRESSED (0x00008000) | Указанный том является сжатым томом. Этот флаг несовместим с флагом FILE_FILE_COMPRESSION. Это не влияет на передачу данных по сети. |
FILE_SUPPORTS_OBJECT_IDS (0x00010000) | Файловая система поддерживает идентификаторы объектов. |
FILE_SUPPORTS_ENCRYPTION (0x00020000) | Файловая система поддерживает шифрование. |
FILE_NAMED_STREAMS (0x00040000) | Файловая система поддерживает потоки данных с именем для файла. |
FILE_READ_ONLY_VOLUME (0x00080000) | Указанный том доступен только для чтения. |
FILE_SEQUENTIAL_WRITE_ONCE (0x00100000) | Указанный том можно записать только в один раз. Запись должна выполняться в последовательном порядке. |
FILE_SUPPORTS_TRANSACTIONS (0x00200000) | Файловая система поддерживает обработку транзакций . |
FILE_SUPPORTS_HARD_LINKS (0x00400000) | Файловая система поддерживает прямые ссылки на другие устройства и секции. |
FILE_SUPPORTS_EXTENDED_ATTRIBUTES (0x00800000) | Файловая система поддерживает расширенные атрибуты (EAS). |
FILE_SUPPORTS_OPEN_BY_FILE_ID (0x01000000) | Файловая система поддерживает открытие по идентификатору файла. |
FILE_SUPPORTS_USN_JOURNAL (0x02000000) | Файловая система поддерживает журналы обновления последовательности (USN). |
FILE_SUPPORTS_INTEGRITY_STREAMS (0x04000000) | Файловая система поддерживает потоки целостности . |
FILE_SUPPORTS_BLOCK_REFCOUNTING (0x08000000) | Файловая система поддерживает клонирование блоков, то есть совместное использование логических кластеров между файлами в одном томе. Файловая система перераспределяет записи в общие кластеры. |
FILE_SUPPORTS_SPARSE_VDL (0x10000000) | Файловая система отслеживает, содержит ли каждый кластер файла допустимые данные (из явных операций записи файлов или автоматических нулей) или недопустимых данных (еще не записаны в или ноль). Файловые системы, использующие разреженную длину данных (VDL), не хранят допустимую длину данных и не требуют, чтобы допустимые данные были рядом в файле. |
FILE_DAX_VOLUME (0x20000000) | Указанный том — это том прямого доступа (DAX). |
FILE_SUPPORTS_GHOSTING (0x40000000) | Файловая система поддерживает призраки. |
MaximumComponentNameLength
Максимальная длина компонента имени файла, поддерживаемая указанной файловой системой, в символах. Компонент имени файла — это часть имени файла между символами разделителя пути (например, обратными косыми чертами).
FileSystemNameLength
Длина в байтах имени файловой системы. Значение этого поля должно быть больше нуля.
FileSystemName[1]
Поле Юникода переменной длины, содержащее имя файловой системы. Это поле не является пустым и должно обрабатываться как последовательность FileSystemNameLength байт.
Замечания
Эти сведения можно запрашивать в любом из следующих способов:
Вызов FltQueryVolumeInformation или ZwQueryVolumeInformationFile, передав FileFsAttributeInformation в качестве значения FileInformationClass и передачи выделенного вызывающим буфером FILE_FS_ATTRIBUTE_INFORMATION-структурированного буфера в качестве значения FileInformation.
- Примечание. В CSVFS FileFsAttributeInformation возвращает FILE_FS_ATTRIBUTE_INFORMATION для файловой системы CSVFS. Если вы хотите запросить FileFsAttributeInformation для CSVFS файловой системы, необходимо использовать FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS.
Создайте IRP с основным кодом функции IRP_MJ_QUERY_VOLUME_INFORMATION.
Для запроса этих сведений не требуются определенные права доступа. Таким образом, эта информация доступна до тех пор, пока том обращается через открытый дескриптор к самому тому, или к файлу или каталогу на томе.
Размер буфера, передаваемого в параметре FileInformation, FltQueryVolumeInformation или ZwQueryVolumeInformationFile должен быть по крайней мере sizeof(FILE_FS_ATTRIBUTE_INFORMATION)
. Так как максимальная длина имени файловой системы не может быть предполагаема (практически ограничение равно 2^31 символьным точкам), второй вызов одной из этих подпрограмм потребуется после FileSystemNameLength.
Эта структура должна быть выровнена по границе LONG (4-байтов).
Требования
Требование | Ценность |
---|---|
заголовка | ntifs.h (include Ntifs.h, Fltkernel.h) |