Функция SetFileAttributesW (fileapi.h)
Задает атрибуты для файла или каталога.
Чтобы выполнить эту операцию как транзакцию, используйте функцию SetFileAttributesTransacted .
Синтаксис
BOOL SetFileAttributesW(
[in] LPCWSTR lpFileName,
[in] DWORD dwFileAttributes
);
Параметры
[in] lpFileName
Имя файла, атрибуты которого необходимо задать.
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
[in] dwFileAttributes
Атрибуты файла, которые необходимо задать для файла.
Этот параметр может быть одним или несколькими значениями, объединенными с помощью побитового оператора ИЛИ. Однако все остальные значения переопределяют FILE_ATTRIBUTE_NORMAL.
Эта функция поддерживает не все атрибуты. Дополнительные сведения см. в разделе «Примечания».
Ниже приведен список поддерживаемых значений атрибутов.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
В следующей таблице описано, как задать атрибуты, которые нельзя задать с помощью Атрибутов SetFileAttributes. Полный список всех значений атрибутов файла и их описание см. в разделе Константы атрибутов файлов.
attribute | Настройка |
---|---|
FILE_ATTRIBUTE_COMPRESSED
0x800 |
Чтобы задать состояние сжатия файла, используйте функцию DeviceIoControl с операцией FSCTL_SET_COMPRESSION . |
FILE_ATTRIBUTE_DEVICE
0x40 |
Защищены; не использовать. |
FILE_ATTRIBUTE_DIRECTORY
0x10 |
Файлы нельзя преобразовать в каталоги. Чтобы создать каталог, используйте функцию CreateDirectory или CreateDirectoryEx . |
FILE_ATTRIBUTE_ENCRYPTED
0x4000 |
Чтобы создать зашифрованный файл, используйте функцию CreateFile с атрибутом FILE_ATTRIBUTE_ENCRYPTED . Чтобы преобразовать существующий файл в зашифрованный, используйте функцию EncryptFile . |
FILE_ATTRIBUTE_REPARSE_POINT
0x400 |
Чтобы связать точку повторного аналитики с файлом или каталогом, используйте функцию DeviceIoControl с операцией FSCTL_SET_REPARSE_POINT . |
FILE_ATTRIBUTE_SPARSE_FILE
0x200 |
Чтобы задать разреженный атрибут файла, используйте функцию DeviceIoControl с операцией FSCTL_SET_SPARSE . |
Транзакция операций
Если файл открыт для изменения в транзакции, ни один другой поток не может открыть файл для изменения, пока транзакция не будет зафиксирована. Таким образом, если поток транзакций открывает файл первым, все последующие потоки, которые пытаются изменить файл до фиксации транзакции, получают нарушение общего доступа. Если поток без транзакций изменяет файл до выполнения транзакций, а файл по-прежнему открыт, когда транзакция пытается открыть его, транзакция получает ошибку ERROR_TRANSACTIONAL_CONFLICT.В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
SMB 3.0 Transparent Failover (TFO) | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Примеры
Пример см. в разделе Извлечение и изменение атрибутов файла.
Примечание
Заголовок fileapi.h определяет SetFileAttributes в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | fileapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |