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


Функция 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 указывает дескриптор безопасности для нового каталога. Если 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) Да
 

Примеры

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

Требования

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

См. также

CreateDirectoryEx

CreateDirectoryTransacted

CreateFile

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

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

RemoveDirectory

SECURITY_ATTRIBUTES

SECURITY_INFORMATION