Функция CreateDirectory (winbase.h)

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

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

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

Синтаксис

BOOL CreateDirectory(
  [in]           LPCTSTR               lpPathName,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

Параметры

[in] lpPathName

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

Для версии ANSI этой функции существует ограничение размера строки по умолчанию для путей в 248 символов (MAX_PATH — достаточно места для имени файла 8,3). Чтобы расширить это ограничение до 32 767 символов в ширину, вызовите версию Функции в Юникоде и добавьте "\?" к пути. Дополнительные сведения см. в разделе Именование файла.

Совет Начиная с Windows 10 версии 1607 для версии в Юникоде этой функции (CreateDirectoryW) можно согласиться на удаление ограничения в 248 символов без добавления "\?\". Ограничение в 255 символов на сегмент пути по-прежнему применяется. Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
 

[in, optional] lpSecurityAttributes

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

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

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

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

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

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

Комментарии

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

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

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

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

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

Примеры

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CreateDirectoryEx

CreateDirectoryTransacted

CreateFile

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

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

RemoveDirectory

SECURITY_ATTRIBUTES

SECURITY_INFORMATION