Функция GetFileAttributesExW (fileapi.h)
Извлекает атрибуты для указанного файла или каталога.
Чтобы выполнить эту операцию как транзакцию, используйте функцию GetFileAttributesTransacted .
Синтаксис
BOOL GetFileAttributesExW(
[in] LPCWSTR lpFileName,
[in] GET_FILEEX_INFO_LEVELS fInfoLevelId,
[out] LPVOID lpFileInformation
);
Параметры
[in] lpFileName
Имя файла или каталога.
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
[in] fInfoLevelId
Класс извлекаемых сведений об атрибутах.
Этот параметр может быть следующим значением из перечисления GET_FILEEX_INFO_LEVELS .
Значение | Значение |
---|---|
|
Параметр lpFileInformation является WIN32_FILE_ATTRIBUTE_DATA структурой. |
[out] lpFileInformation
Указатель на буфер, получающий сведения об атрибуте.
Тип сведений об атрибутах, хранящихся в этом буфере, определяется значением fInfoLevelId.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет ненулевым.
Если функция завершается сбоем, возвращаемое значение равно нулю (0). Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Функция GetFileAttributes извлекает сведения об атрибутах файловой системы. GetFileAttributesEx может получать другие наборы сведений об атрибутах файла или каталога. В настоящее время GetFileAttributesEx извлекает набор стандартных атрибутов, которые являются надмножеством сведений об атрибутах файловой системы.
Когда функция GetFileAttributesEx вызывается в каталоге, который является подключенной папкой, она возвращает атрибуты каталога, а не корневого каталога в томе, который подключенная папка связывает с каталогом. Чтобы получить атрибуты связанного тома, вызовите Метод GetVolumeNameForVolumeMountPoint , чтобы получить имя связанного тома. Затем используйте полученное имя в вызове Метода GetFileAttributesEx. Результаты представляют собой атрибуты корневого каталога в связанном томе.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
Прозрачная отработка отказа (TFO) SMB 3.0 | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Поведение символьной ссылки— если путь указывает на символьную ссылку, функция возвращает атрибуты для символьной ссылки.
Транзакция операций
Если файл открыт для изменения в транзакции, ни один другой поток не может открыть файл для изменения, пока транзакция не будет зафиксирована. Таким образом, если транзакционный поток открывает файл первым, все последующие потоки, которые пытаются изменить файл до фиксации транзакции, получат нарушение общего доступа. Если поток без транзакций изменяет файл до того, как выполняется транзакция, и файл по-прежнему открыт, когда транзакция пытается открыть его, транзакция получает ошибку ERROR_TRANSACTIONAL_CONFLICT.Примечание
Заголовок fileapi.h определяет GetFileAttributesEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | fileapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |