Funzione SetFileAttributesTransactedA (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.]
Imposta gli attributi per un file o una directory come operazione transazionata.
Sintassi
BOOL SetFileAttributesTransactedA(
[in] LPCSTR lpFileName,
[in] DWORD dwFileAttributes,
[in] HANDLE hTransaction
);
Parametri
[in] lpFileName
Nome del file i cui attributi devono essere impostati.
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.
Mancia
A partire da Windows 10, versione 1607, è possibile acconsentire esplicitamente alla rimozione della limitazione MAX_PATH senza anteporre "\\?\". Per informazioni dettagliate, vedere la sezione "Limitazione massima della lunghezza del percorso" di nomi, percorsi e spazi dei nomi.
Il file 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] dwFileAttributes
Attributi di file da impostare per il file.
Per un elenco del valore dell'attributo di file e le relative descrizioni, vedere Costanti attributo file. Questo parametro può essere uno o più valori combinati usando l'operatore OR bit per bit. Tuttavia, tutti gli altri valori eseguono l'override di FILE_ATTRIBUTE_NORMAL.
Non tutti gli attributi sono supportati da questa funzione. Per altre informazioni, vedere la sezione Osservazioni.
Di seguito è riportato un elenco di valori di attributo supportati.
FILE_ATTRIBUTE_ARCHIVE (32 (0x20))
FILE_ATTRIBUTE_HIDDEN (2 (0x2))
FILE_ATTRIBUTE_NORMAL (128 (0x80))
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (8192) (0x2000))
FILE_ATTRIBUTE_OFFLINE (4096 (0x1000))
FILE_ATTRIBUTE_READONLY (1 (0x1))
FILE_ATTRIBUTE_SYSTEM (4 (0x4))
FILE_ATTRIBUTE_TEMPORARY (256 (0x100))
[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. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Osservazioni
Nella tabella seguente viene descritto come impostare gli attributi che non possono essere impostati usando SetFileAttributesTransacted. Si noti che queste non sono operazioni transazionate.
Attributo | Come impostare |
---|---|
FILE_ATTRIBUTE_COMPRESSED
0x800 |
Per impostare lo stato di compressione di un file, usare la funzione deviceIoControl |
FILE_ATTRIBUTE_DEVICE
0x40 |
Riservato; non usare. |
FILE_ATTRIBUTE_DIRECTORY
0x10 |
I file non possono essere convertiti in directory. Per creare una directory, usare la CreateDirectory |
FILE_ATTRIBUTE_ENCRYPTED
0x4000 |
Per creare un file crittografato, usare la funzione CreateFile |
FILE_ATTRIBUTE_REPARSE_POINT
0x400 |
Per associare un punto reparse a un file o a una directory, usare la funzione deviceIoControl |
FILE_ATTRIBUTE_SPARSE_FILE
0x200 |
Per impostare l'attributo sparse di un file, usare la funzione DeviceIoControl con l'operazione di FSCTL_SET_SPARSE. |
Se un file è aperto per la modifica in una transazione, nessun altro thread può aprire correttamente il file per la modifica fino a quando non viene eseguito il commit della transazione. Se un thread transazionale apre prima il file, tutti i thread successivi che tentano di aprire il file per la modifica prima che venga eseguito il commit della transazione riceveranno una violazione di condivisione. Se un thread non transazionale apre il file per la modifica prima che il thread transazionale e sia ancora aperto quando il thread transazionale tenta di aprirlo, la transazione riceverà l'errore ERROR_TRANSACTIONAL_CONFLICT.
Per altre informazioni sulle transazioni, vedere NTFS transazionale.
In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.
Tecnologia | Sostenuto |
---|---|
Protocollo SMB (Server Message Block) 3.0 | No |
SMB 3.0 Transparent Failover (TFO) | No |
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) | No |
Cluster Shared Volume File System (CsvFS) | No |
Resilient File System (ReFS) | No |
SMB 3.0 non supporta TxF.
operazioni transazionate
Se un file è aperto per la modifica in una transazione, nessun altro thread può aprire il file per la modifica finché non viene eseguito il commit della transazione. Pertanto, se un thread transazionale apre prima il file, tutti i thread successivi che tentano di modificare il file prima che venga eseguito il commit della transazione ricevano una violazione di condivisione. Se un thread non transazionale modifica il file prima che il thread transazionale e il file sia ancora aperto quando la transazione tenta di aprirlo, la transazione riceve l'errore ERROR_TRANSACTIONAL_CONFLICT.Nota
L'intestazione winbase.h definisce SetFileAttributesTransacted 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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista [solo app desktop] |
server minimo supportato | Windows Server 2008 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
winbase.h (include Windows.h) |
libreria |
Kernel32.lib |
dll | Kernel32.dll |
Vedere anche
costanti dell'attributo file