Condividi tramite


Funzione CreateDirectoryExA (winbase.h)

Crea una nuova directory con gli attributi di una directory modello specificata. Se il file system sottostante supporta la sicurezza nei file e nelle directory, la funzione applica un descrittore di sicurezza specificato alla nuova directory. La nuova directory mantiene gli altri attributi della directory modello specificata.

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

Sintassi

BOOL CreateDirectoryExA(
  [in]           LPCSTR                lpTemplateDirectory,
  [in]           LPCSTR                lpNewDirectory,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

Parametri

[in] lpTemplateDirectory

Percorso della directory da usare come modello durante la creazione della nuova directory.

Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, prependo "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.

Suggerimento

A partire da Windows 10, versione 1607, è possibile scegliere di rimuovere la limitazione MAX_PATH senza pre sospeso "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima lunghezza percorso" di nomi, nomi, percorsi e spazi dei nomi .

[in] lpNewDirectory

Percorso della directory da creare.

Per impostazione predefinita, il nome è limitato a MAX_PATH caratteri. Per estendere questo limite a 32.767 caratteri wide, prependo "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.

Suggerimento

A partire da Windows 10, versione 1607, è possibile scegliere di rimuovere la limitazione MAX_PATH senza pre sospeso "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima lunghezza percorso" di nomi, nomi, percorsi e spazi dei nomi .

[in, optional] lpSecurityAttributes

Puntatore a una struttura SECURITY_ATTRIBUTES . Il membro lpSecurityDescriptor 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 (ACL) nel descrittore di sicurezza predefinito per una directory vengono ereditati dalla directory padre.

Il file system di destinazione deve supportare la sicurezza nei file e nelle directory per questo parametro per avere un effetto. Questo valore è indicato quando GetVolumeInformation restituisceFS_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 (0). Per informazioni dettagliate sull'errore, chiamare GetLastError. Gli errori possibili includono quanto segue.

Codice restituito Descrizione
ERROR_ALREADY_EXISTS
La directory specificata esiste già.
ERROR_PATH_NOT_FOUND
Non esistono una o più directory intermedie. Questa funzione crea solo la directory finale nel percorso. Per creare tutte le directory intermedie nel percorso, usare la funzione SHCreateDirectoryEx .

Commenti

La funzione CreateDirectoryEx consente di creare directory che ereditano informazioni di flusso da altre directory. Questa funzione è utile, ad esempio, quando si usano directory Macintosh, che hanno un flusso di risorse necessario per identificare correttamente il contenuto della directory come attributo.

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

È possibile ottenere un handle in una directory chiamando la funzione CreateFile con il set di flag FILE_FLAG_BACKUP_SEMANTICS . 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 che l'ereditarietà è effettiva. Per altre informazioni, vedere Propagazione automatica degli ACL ereditabili.

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

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0
Failover trasparente SMB 3.0 (TFO)
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO)
File system del volume condiviso del cluster (CsvFS)
File system resiliente (ReFS)
 

Nota

L'intestazione winbase.h definisce CreateDirectoryEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

CreateDirectory

CreateDirectoryTransacted

CreateFile

Creazione ed eliminazione di directory

Funzioni di gestione delle directory

RemoveDirectory

SECURITY_ATTRIBUTES