Condividi tramite


Funzione CreateDirectory (winbase.h)

Crea una nuova directory. Se il file system sottostante supporta la sicurezza su file e directory, la funzione applica un descrittore di sicurezza specificato alla nuova directory.

Per specificare una directory modello, usare la funzione CreateDirectoryEx .

Per eseguire questa operazione come operazione transazionata, usare la funzione CreateDirectoryTransacted .

Sintassi

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

Parametri

[in] lpPathName

Percorso della directory da creare.

Per la versione ANSI di questa funzione, esiste un limite di dimensioni di stringa predefinito per i percorsi di 248 caratteri (MAX_PATH - spazio sufficiente per un nome file 8.3). Per estendere questo limite a 32.767 caratteri wide, chiamare la versione Unicode della funzione e anteporre "\?" al percorso. Per altre informazioni, vedere Naming a File

suggerimento A partire da Windows 10, versione 1607, per la versione Unicode di questa funzione (CreateDirectoryW), è possibile acconsentire esplicitamente per rimuovere la limitazione dei caratteri 248 senza anteporre "\\?\". Il limite di 255 caratteri per segmento di percorso si applica ancora. Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
 

[in, optional] lpSecurityAttributes

Puntatore a una struttura SECURITY_ATTRIBUTES. Il lpSecurityDescriptor membro della struttura specifica un descrittore di sicurezza per la nuova directory. Se lpSecurityAttributes è null, la directory ottiene un descrittore di sicurezza predefinito. Gli elenchi di controllo di accesso nel descrittore di sicurezza predefinito per una directory vengono ereditati dalla directory padre.

Il file system di destinazione deve supportare la sicurezza dei file e delle directory affinché questo parametro abbia effetto. Questo è indicato quando GetVolumeInformation restituisce FS_PERSISTENT_ACLS.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError. I possibili errori includono quanto segue.

Codice restituito Descrizione
ERROR_ALREADY_EXISTS
La directory specificata esiste già.
ERROR_PATH_NOT_FOUND
Una o più directory intermedie non esistono; questa funzione creerà solo la directory finale nel percorso.

Osservazioni

Alcuni file system, ad esempio il file system NTFS, supportano la compressione o la crittografia per singoli file e directory. Nei volumi formattati per un file system di questo tipo, una nuova directory eredita gli attributi di compressione e crittografia della directory padre.

Un'applicazione può ottenere un handle in una directory chiamando CreateFile con il flag FILE_FLAG_BACKUP_SEMANTICS impostato. Per un esempio di codice, vedere CreateFile.

Per supportare funzioni di ereditarietà che eseguono query sul descrittore di sicurezza di questo oggetto possono determinare e segnalare in modo euristico che l'ereditarietà è attiva. Per altre informazioni, vedere propagazione automatica degli ACL ereditabili.

In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Sostenuto
Protocollo SMB (Server Message Block) 3.0
SMB 3.0 Transparent Failover (TFO)
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO)
Cluster Shared Volume File System (CsvFS)
Resilient File System (ReFS)
 

Esempi

Per un esempio, vedere Recupero e modifica degli attributi di file.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione winbase.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

CreateDirectoryEx

CreateDirectoryTransacted

CreateFile

creazione ed eliminazione di directory

funzioni di gestione directory di

RemoveDirectory

SECURITY_ATTRIBUTES

SECURITY_INFORMATION