Condividi tramite


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 con l'operazione di FSCTL_SET_COMPRESSION.
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 o funzione CreateDirectoryEx.
FILE_ATTRIBUTE_ENCRYPTED

0x4000

Per creare un file crittografato, usare la funzione CreateFile con l'attributo FILE_ATTRIBUTE_ENCRYPTED. Per convertire un file esistente in un file crittografato, usare la funzione EncryptFile .
FILE_ATTRIBUTE_REPARSE_POINT

0x400

Per associare un punto reparse a un file o a una directory, usare la funzione deviceIoControl con l'operazione di FSCTL_SET_REPARSE_POINT.
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

funzioni di gestione file

GetFileAttributesTransacted

collegamenti simbolici

NTFS transazionale