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 développés par TxF peuvent être réalisés par le biais de techniques plus simples et plus facilement disponibles. En outre, TxF peut ne pas être disponible dans les futures versions de Microsoft Windows. Pour plus d’informations et d’alternatives à TxF, consultez Alternatives à l’utilisation de NTFS transactionnel.]
Établit un lien dur 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é; doit être NULL .
[in] hTransaction
Handle de la transaction. Ce handle est retourné par la fonction CreateTransaction.
Valeur de retour
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’erreur étendues, 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, autrement dit, plusieurs liens durs vers le même fichier, qui peuvent être différents noms dans le même répertoire, ou les mêmes ou différents noms 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 sont uniquement des entrées de répertoire pour un fichier, lorsqu’une application modifie un fichier par le biais d’un lien dur, toutes les applications qui utilisent n’importe quel 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 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 auquel un lien dur pointe. 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 dur, 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 différents descripteurs de sécurité sur une base par lien dur.
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.
Indicateurs, attributs, accès et partage spécifiés dans CreateFileTransacted fonctionner 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 dur 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 dur vers la cible.
Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.
Technologie | Supporté |
---|---|
Protocole SMB (Server Message Block) 3.0 | Non |
Basculement transparent SMB 3.0 (TFO) | Non |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Non |
Cluster Shared Volume File System (CsvFS) | Non |
Système de fichiers résilient (ReFS) | Non |
Notez que SMB 3.0 ne prend pas en charge TxF.
Note
L’en-tête winbase.h définit CreateHardLinkTransacted comme 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2008 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winbase.h (inclure Windows.h) |
bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |