CreateHardLinkTransactedW, fonction (winbase.h)

[Microsoft recommande vivement aux développeurs d’utiliser d’autres moyens pour répondre aux besoins de votre application. De nombreux scénarios utilisant TxF peuvent être réalisés à l’aide de techniques plus simples et plus facilement disponibles. En outre, TxF peut ne pas être disponible dans les versions à venir de Microsoft Windows. Pour plus d’informations et les alternatives à TxF, consultez Alternatives à l’utilisation de Transactionnel NTFS.]

Établit un lien physique entre un fichier existant et un nouveau fichier en tant qu’opération transactionnelle. Cette fonction est uniquement prise en charge sur le système de fichiers NTFS, et uniquement pour les fichiers, et non pour les répertoires.

Syntaxe

BOOL CreateHardLinkTransactedW(
  [in] LPCWSTR               lpFileName,
  [in] LPCWSTR               lpExistingFileName,
       LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in] HANDLE                hTransaction
);

Paramètres

[in] lpFileName

Nom du nouveau fichier.

Ce paramètre ne peut pas spécifier le nom d’un répertoire.

[in] lpExistingFileName

Nom du fichier existant.

Ce paramètre ne peut pas spécifier le nom d’un répertoire.

lpSecurityAttributes

Réservés au; doit être NULL.

[in] hTransaction

Handle de la transaction. Ce handle est retourné par la fonction CreateTransaction .

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro (0). Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Le nombre maximal de liens physiques pouvant être créés avec cette fonction est de 1 023 par fichier. Si plus de 1 023 liens sont créés pour un fichier, une erreur se produit.

Les fichiers doivent résider sur l’ordinateur local ; sinon, la fonction échoue et le dernier code d’erreur est défini sur ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

Remarques

Toute entrée de répertoire pour un fichier créé avec CreateFileTransacted ou CreateHardLinkTransacted est un lien physique vers un fichier associé. Un lien physique supplémentaire créé avec la fonction CreateHardLinkTransacted vous permet d’avoir plusieurs entrées de répertoire pour un fichier, c’est-à-dire plusieurs liens physiques vers le même fichier, qui peuvent être des noms différents dans le même répertoire, ou des noms identiques ou différents dans différents répertoires. Toutefois, tous les liens physiques vers un fichier doivent se trouver sur le même volume.

Étant donné que les liens physiques ne sont que des entrées de répertoire pour un fichier, lorsqu’une application modifie un fichier par le biais d’un lien physique, toutes les applications qui utilisent un autre lien physique vers le fichier voient les modifications. En outre, toutes les entrées de répertoire sont mises à jour si le fichier change. Par exemple, si une taille de fichier change, tous les liens durs vers le fichier affichent la nouvelle taille de fichier.

Le descripteur de sécurité appartient au fichier vers lequel pointe un lien physique. Le lien lui-même n’est qu’une entrée de répertoire et n’a pas de descripteur de sécurité. Par conséquent, lorsque vous modifiez le descripteur de sécurité d’un lien physique, vous modifiez le descripteur de sécurité du fichier sous-jacent, et tous les liens physiques qui pointent vers le fichier autorisent l’accès nouvellement spécifié. Vous ne pouvez pas donner à un fichier des descripteurs de sécurité différents par lien physique.

Cette fonction ne modifie pas le descripteur de sécurité du fichier à lier, même si des informations de descripteur de sécurité sont passées dans le paramètre lpSecurityAttributes .

Utilisez DeleteFileTransacted pour supprimer les liens physiques. Vous pouvez les supprimer dans n’importe quel ordre, quel que soit l’ordre dans lequel ils sont créés.

Les indicateurs, attributs, accès et partage spécifiés dans CreateFileTransacted fonctionnent par fichier. Autrement dit, si vous ouvrez un fichier qui n’autorise pas le partage, une autre application ne peut pas partager le fichier en créant un lien physique vers le fichier.

Lorsque vous créez un lien physique sur le système de fichiers NTFS, les informations d’attribut de fichier dans l’entrée de répertoire sont actualisées uniquement lorsque le fichier est ouvert ou lorsque GetFileInformationByHandle est appelé avec le handle d’un fichier spécifique.

Liens symboliques : Si le chemin pointe vers un lien symbolique, la fonction crée un lien physique vers la cible.

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 Non
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Non
Système de fichiers résilient (ReFS) No
 

Notez que SMB 3.0 ne prend pas en charge TxF.

Notes

L’en-tête winbase.h définit CreateHardLinkTransacted en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

   
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateFileTransacted

DeleteFileTransacted

Fonctions de gestion des fichiers

Liens durs et jonctions

Liens symboliques

NTFS transactionnel