Partager via


CreateHardLinkTransactedA, 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, pas les répertoires.

Syntaxe

BOOL CreateHardLinkTransactedA(
  [in] LPCSTR                lpFileName,
  [in] LPCSTR                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 avoir la valeur 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 durs qui peuvent être créés avec cette fonction est de 1023 par fichier. Si plus de 1023 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 dur vers un fichier associé. Un lien dur 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 durs 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 durs vers un fichier doivent se trouver sur le même volume.

Étant donné que les liens durs 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 dur 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 la taille d’un 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 durs 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 liaison matérielle.

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

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

Les indicateurs, les attributs, l’accès et le partage spécifiés dans CreateFileTransacted fonctionnent sur une base 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 dur 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 du 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 dur 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 No
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) No
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 comme un 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. Le mélange 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

Condition requise Valeur
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