Condividi tramite


Funzione CreateDirectoryTransactedA (winbase.h)

[Microsoft consiglia vivamente agli sviluppatori di usare mezzi alternativi per soddisfare le esigenze dell'applicazione. Molti scenari per cui è stato sviluppato TxF possono essere ottenuti tramite tecniche più semplici e più facilmente disponibili. Inoltre, TxF potrebbe non essere disponibile nelle versioni future di Microsoft Windows. Per altre informazioni e alternative a TxF, vedere Alternative all'uso di NTFS transazionale.

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

Sintassi

BOOL CreateDirectoryTransactedA(
  [in, optional] LPCSTR                lpTemplateDirectory,
  [in]           LPCSTR                lpNewDirectory,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           HANDLE                hTransaction
);

Parametri

[in, optional] lpTemplateDirectory

Percorso della directory da usare come modello durante la creazione della nuova directory. Questo parametro può essere NULL.

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

Suggerimento

A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente a rimuovere la limitazione MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di Denominazione di file, percorsi e spazi dei nomi .

La directory deve risiedere nel computer locale; in caso contrario, la funzione ha esito negativo e l'ultimo codice di errore è impostato su ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[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, anteporre "\\?\" al percorso. Per altre informazioni, vedere Denominazione di file, percorsi e spazi dei nomi.

Suggerimento

A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente a rimuovere la limitazione MAX_PATH senza anteporre "\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di Denominazione di file, 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 relativa directory padre.

Per rendere effettivo questo parametro, il file system di destinazione deve supportare la sicurezza nei file e nelle directory. Questo valore è indicato quando GetVolumeInformation restituisceFS_PERSISTENT_ACLS.

[in] hTransaction

Handle per la transazione. Questo handle viene restituito dalla funzione CreateTransaction .

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_EFS_NOT_ALLOWED_IN_TRANSACTION
Non è possibile creare una directory figlio con una directory padre con la crittografia disabilitata.
ERROR_PATH_NOT_FOUND
Una o più directory intermedie non esistono. Questa funzione crea solo la directory finale nel percorso.

Commenti

La funzione CreateDirectoryTransacted consente di creare directory che ereditano le informazioni di flusso da altre directory. Questa funzione è utile, ad esempio, quando si usano directory Macintosh, che dispongono di 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 un file system di questo tipo, una nuova directory eredita gli attributi di compressione e crittografia della directory padre.

Questa funzione ha esito negativo con ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION se si tenta di creare una directory figlio con una directory padre con la crittografia disabilitata.

È possibile ottenere un handle in una directory chiamando la funzione CreateFileTransacted con il flag FILE_FLAG_BACKUP_SEMANTICS impostato.

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

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

SMB 3.0 non supporta TxF.

Nota

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

Requisiti

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

Vedere anche

CreateFileTransacted

Creazione ed eliminazione di directory

Funzioni di gestione directory

RemoveDirectoryTransacted

SECURITY_ATTRIBUTES

NTFS transazionale