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.

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 .

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 del file da impostare per il file.

Per un elenco del valore dell'attributo di file e le relative descrizioni, vedere Costanti degli attributi 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 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Nella tabella seguente viene descritto come impostare gli attributi che non possono essere impostati usando SetFileAttributesTransacted. Si noti che queste operazioni non sono transazioni.

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

Riservati; non usare.
FILE_ATTRIBUTE_DIRECTORY

0x10

I file non possono essere convertiti in directory. Per creare una directory, usare la funzione CreateDirectory o 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 FSCTL_SET_SPARSE .
 

Se un file è aperto per la modifica in una transazione, nessun altro thread può aprire correttamente il file per la modifica finché 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 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.

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 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

Costanti degli attributi di file

Funzioni di gestione file

GetFileAttributesTransacted

Collegamenti simbolici

NTFS transazionale