Condividi tramite


Funzione CreateHardLinkTransactedA (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.

Stabilisce un collegamento rigido tra un file esistente e un nuovo file come operazione transazionata. Questa funzione è supportata solo nel file system NTFS e solo per i file, non per le directory.

Sintassi

BOOL CreateHardLinkTransactedA(
  [in] LPCSTR                lpFileName,
  [in] LPCSTR                lpExistingFileName,
       LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in] HANDLE                hTransaction
);

Parametri

[in] lpFileName

Nome del nuovo file.

Questo parametro non può specificare il nome di una directory.

[in] lpExistingFileName

Nome del file esistente.

Questo parametro non può specificare il nome di una directory.

lpSecurityAttributes

Riservati; deve essere NULL.

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

Il numero massimo di collegamenti reali che è possibile creare con questa funzione è 1023 per file. Se vengono creati più di 1023 collegamenti per un file, viene restituito un errore.

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

Commenti

Qualsiasi voce di directory per un file creato con CreateFileTransacted o CreateHardLinkTransacted è un collegamento rigido a un file associato. Un collegamento rigido aggiuntivo creato con la funzione CreateHardLinkTransacted consente di avere più voci di directory per un file, ovvero più collegamenti rigidi allo stesso file, che possono essere nomi diversi nella stessa directory o nomi uguali o diversi in directory diverse. Tuttavia, tutti i collegamenti rigidi a un file devono trovarsi nello stesso volume.

Poiché i collegamenti reali sono solo voci di directory per un file, quando un'applicazione modifica un file tramite qualsiasi collegamento rigido, tutte le applicazioni che usano qualsiasi altro collegamento rigido al file visualizzano le modifiche. Inoltre, tutte le voci della directory vengono aggiornate se il file viene modificato. Ad esempio, se le dimensioni di un file cambiano, tutti i collegamenti reali al file mostrano le nuove dimensioni del file.

Il descrittore di sicurezza appartiene al file a cui punta un collegamento rigido. Il collegamento stesso è solo una voce di directory e non dispone di un descrittore di sicurezza. Pertanto, quando si modifica il descrittore di sicurezza di un collegamento rigido, si modifica il descrittore di sicurezza del file sottostante e tutti i collegamenti reali che puntano al file consentono l'accesso appena specificato. Non è possibile assegnare a un file descrittori di sicurezza diversi per ogni collegamento rigido.

Questa funzione non modifica il descrittore di sicurezza del file in modo che sia collegato, anche se le informazioni sul descrittore di sicurezza vengono passate nel parametro lpSecurityAttributes .

Usare DeleteFileTransacted per eliminare i collegamenti reali. È possibile eliminarli in qualsiasi ordine indipendentemente dall'ordine in cui vengono creati.

Flag, attributi, accesso e condivisione specificati in CreateFileTransacted operano in base ai singoli file. Ovvero, se si apre un file che non consente la condivisione, un'altra applicazione non può condividere il file creando un nuovo collegamento rigido al file.

Quando si crea un collegamento rigido nel file system NTFS, le informazioni sull'attributo del file nella voce di directory vengono aggiornate solo quando il file viene aperto o quando viene chiamato GetFileInformationByHandle con l'handle di un file specifico.

Collegamenti simbolici: Se il percorso punta a un collegamento simbolico, la funzione crea un collegamento rigido alla destinazione.

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
 

Si noti che SMB 3.0 non supporta TxF.

Nota

L'intestazione winbase.h definisce CreateHardLinkTransacted 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

DeleteFileTransacted

Funzioni di gestione file

Collegamenti rigidi e giunzioni

Collegamenti simbolici

NTFS transazionale