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


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

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

Чтобы указать каталог шаблонов, используйте функцию createDirectoryEx .

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

Синтаксис

BOOL CreateDirectoryA(
  [in]           LPCSTR                lpPathName,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

Параметры

[in] lpPathName

Путь к созданному каталогу.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 расширенных символов, добавьте "\\?\" в путь. Дополнительные сведения см. в именовании файлов, путей и пространств имен.

Кончик

Начиная с Windows 10 версии 1607, вы можете отказаться от ограничения MAX_PATH без предустановки "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" файлы именования, пути и пространства имен.

[in, optional] lpSecurityAttributes

Указатель на структуру SECURITY_ATTRIBUTES. Элемент lpSecurityDescriptor указывает дескриптор безопасности для нового каталога. Если lpSecurityAttributesNULL, каталог получает дескриптор безопасности по умолчанию. Списки управления доступом в дескрипторе безопасности по умолчанию для каталога наследуются от родительского каталога.

Целевая файловая система должна поддерживать безопасность файлов и каталогов, чтобы этот параметр повлиял. (Это указывает, когда GetVolumeInformation возвращает FS_PERSISTENT_ACLS.)

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

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

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

Возвращаемый код Описание
ERROR_ALREADY_EXISTS
Указанный каталог уже существует.
ERROR_PATH_NOT_FOUND
Один или несколько промежуточных каталогов не существуют; Эта функция создаст только окончательный каталог в пути.

Замечания

Некоторые файловые системы, такие как файловая система NTFS, поддерживают сжатие или шифрование отдельных файлов и каталогов. В томах, отформатированных для такой файловой системы, новый каталог наследует атрибуты сжатия и шифрования родительского каталога.

Приложение может получить дескриптор в каталог, вызвав CreateFile с набором флагов FILE_FLAG_BACKUP_SEMANTICS. Пример кода см. в разделе CreateFile.

Для поддержки функций наследования, запрашивающих дескриптор безопасности этого объекта, может эвристически определить и сообщить о том, что наследование действует. Дополнительные сведения см. в автоматическом распространении наследуемых acEs.

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

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

Примеры

Пример см. в разделе получения и изменения атрибутов файла.

Заметка

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

Требования

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

См. также

CreateDirectoryEx

CreateDirectoryTransacted

CreateFile

создание и удаление каталогов

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

RemoveDirectory

SECURITY_ATTRIBUTES

SECURITY_INFORMATION