Partager via


structure FILE_LINK_INFORMATION (ntifs.h)

La structure FILE_LINK_INFORMATION est utilisée pour créer un lien dur NTFS vers un fichier existant.

Syntaxe

typedef struct _FILE_LINK_INFORMATION {
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS5)
    union {
        BOOLEAN ReplaceIfExists;  // FileLinkInformation
        ULONG Flags;              // FileLinkInformationEx
    } DUMMYUNIONNAME;
#else
    BOOLEAN ReplaceIfExists;
#endif
    HANDLE RootDirectory;
    ULONG FileNameLength;
    WCHAR FileName[1];
} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;

Membres

DUMMYUNIONNAME

DUMMYUNIONNAME.ReplaceIfExists

Définissez la valeur TRUE pour spécifier que si le lien existe déjà, il doit être remplacé par le nouveau lien. Définissez la valeur FALSE si l’opération de création de liens doit échouer si le lien existe déjà. Disponible à partir de Windows 10, version 1809.

DUMMYUNIONNAME.Flags

Indicateurs pour l’opération de liaison. Ce champ s’applique uniquement lorsqu’il est utilisé avec la classe d’informations FileLinkInformationEx. Disponible à partir de Windows 10, version 1809.

Voici les valeurs possibles :

Valeur Signification
FILE_LINK_REPLACE_IF_EXISTS (0x00000001) Si un fichier portant le nom donné existe déjà, il doit être remplacé par le nouveau lien. Équivalent au champ ReplaceIfExists utilisé avec la classe d’informations FileLinkInformation.
FILE_LINK_POSIX_SEMANTICS (0x00000002) Si FILE_LINK_REPLACE_IF_EXISTS est également spécifié, autorisez le remplacement d’un fichier même s’il existe des handles existants. Les handles existants du fichier remplacé continuent d’être valides pour les opérations telles que la lecture et l’écriture. Les ouvertures suivantes du nom cible ouvrent le nouveau lien, et non le fichier remplacé.
FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE (0x00000008) Lors de la création d’un lien dans un nouveau répertoire, supprimez les règles d’héritage liées à la propriété ID de réserve de stockage du fichier.
FILE_LINK_NO_INCREASE_AVAILABLE_SPACE (0x00000010) Si FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE n’est pas également spécifié, lors de la création d’un lien dans un nouveau répertoire, redimensionnez automatiquement les zones de réserve de stockage affectées si nécessaire pour empêcher l’utilisateur d’avoir un espace libre visible sur le volume. Nécessite la gestion de l’accès au volume.
FILE_LINK_NO_DECREASE_AVAILABLE_SPACE (0x00000020) Si FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE n’est pas également spécifié, lors de la création d’un lien dans un nouveau répertoire, redimensionnez automatiquement les zones de réserve de stockage affectées si nécessaire pour empêcher l’utilisateur d’espace libre visible sur le volume de diminuer. Nécessite la gestion de l’accès au volume.
FILE_LINK_PRESERVE_AVAILABLE_SPACE (0x00000030) Équivaut à spécifier à la fois FILE_LINK_NO_INCREASE_AVAILABLE_SPACE et FILE_LINK_NO_DECREASE_AVAILABLE_SPACE.
FILE_LINK_IGNORE_READONLY_ATTRIBUTE (0x00000040) Si FILE_LINK_REPLACE_IF_EXISTS est également spécifié, autorisez le remplacement d’un fichier même s’il est en lecture seule. Nécessite WRITE_ATTRIBUTES’accès au fichier remplacé.
FILE_LINK_FORCE_RESIZE_TARGET_SR (0x00000080) Si FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE n’est pas également spécifié, lors de la création d’un lien dans un nouveau répertoire qui fait partie d’une zone de réserve de stockage différente, augmentez toujours la zone de réserve de stockage du répertoire cible en fonction de la taille totale du fichier lié. Nécessite la gestion de l’accès au volume.
FILE_LINK_FORCE_RESIZE_SOURCE_SR (0x00000100) Si FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE n’est pas également spécifié, lors de la création d’un lien dans un nouveau répertoire qui fait partie d’une zone de réserve de stockage différente, réduisez toujours la zone de réserve de stockage du répertoire source en fonction de la taille totale du fichier lié. Nécessite la gestion de l’accès au volume.
FILE_LINK_FORCE_RESIZE_SR (0x00000180) Équivaut à spécifier à la fois FILE_LINK_FORCE_RESIZE_TARGET_SR et FILE_LINK_FORCE_RESIZE_SOURCE_SR.

ReplaceIfExists

Définissez la valeur TRUE pour spécifier que si le lien existe déjà, il doit être remplacé par le nouveau lien. Définissez la valeur FALSE si l’opération de création de liens doit échouer si le lien existe déjà.

RootDirectory

Si le lien doit être créé dans le même répertoire que le fichier auquel il est lié ou si le FileName membre contient le chemin d’accès complet du lien à créer, il s’agit de NULL. Sinon, il s’agit d’un handle pour le répertoire dans lequel le lien doit être créé.

FileNameLength

Longueur, en octets, de la chaîne de nom de fichier.

FileName[1]

Premier caractère du nom à attribuer au lien nouvellement créé. Ceci est suivi en mémoire par le reste de la chaîne. Si le RootDirectory membre a la valeur NULL et que le lien doit être créé dans un répertoire différent du fichier auquel il est lié, ce membre spécifie le nom complet du chemin d’accès pour le lien à créer. Sinon, il spécifie uniquement le nom du fichier. (Consultez la section Remarques pour ZwQueryInformationFile pour plus d’informations sur la syntaxe de cette chaîne de nom de fichier.)

Remarques

La structure FILE_LINK_INFORMATION est utilisée pour créer un lien dur NTFS vers un fichier existant. Cette opération peut être effectuée de l’une des manières suivantes :

  • Appelez FltSetInformationFile ou ZwSetInformationFile, en passant FileLinkInformation comme valeur de FileInformationClass et en passant une mémoire tampon FILE_LINK_INFORMATION structurée par l’appelant comme valeur de FileInformation. Le paramètre FileHandle spécifie le fichier existant vers lequel le lien dur doit pointer.

  • Créez un IRP avec le code de fonction principal IRP_MJ_SET_INFORMATION.

Aucun droit d’accès spécifique n’est requis pour définir ces informations.

Les minifilters du système de fichiers doivent utiliser FltSetInformationFile, et non ZwSetInformationFile, pour définir ces informations pour un fichier.

Pour plus d’informations sur les liens durs NTFS, consultez la documentation du Kit de développement logiciel (SDK) Microsoft Windows pour la fonction Win32 CreateHardLink.

La taille de la mémoire tampon FileInformation transmise à FltSetInformationFile ou ZwSetInformationFile doit être au moins taille de(FILE_LINK_INFORMATION).

Cette structure doit être alignée sur une limite LONG (4 octets).

Exigences

Exigence Valeur
d’en-tête ntifs.h (include Ntifs.h, Fltkernel.h)

Voir aussi

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwQueryInformationFile

ZwSetInformationFile