Partager via


NetDfsMove, fonction (lmdfs.h)

Renomme ou déplace un lien DFS.

Syntaxe

NET_API_STATUS NET_API_FUNCTION NetDfsMove(
  [in] LPWSTR OldDfsEntryPath,
  [in] LPWSTR NewDfsEntryPath,
  [in] ULONG  Flags
);

Paramètres

[in] OldDfsEntryPath

Pointeur vers une chaîne qui spécifie le chemin source de l’opération de déplacement. Cette valeur doit être un lien DFS ou le préfixe de chemin d’accès de tout lien DFS dans l’espace de noms DFS.

[in] NewDfsEntryPath

Pointeur vers une chaîne qui spécifie le chemin de destination de l’opération de déplacement. Cette valeur doit être un chemin d’accès ou un lien DFS dans le même espace de noms DFS.

[in] Flags

Ensemble d’indicateurs qui décrivent les actions à effectuer lors du déplacement du lien.

DFS_MOVE_FLAG_REPLACE_IF_EXISTS (0x00000001)

Si le chemin de destination est déjà un lien DFS existant, remplacez-le dans le cadre de l’opération de déplacement.

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour est un code d’erreur système. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur système.

Notes

La fonction NetDfsMove déplace facilement un lien d’un ancien nom vers un nouveau. Dans le passé, il a été nécessaire d’effectuer l’action non triviale de supprimer un lien incorrect ou ancien et d’en créer un nouveau, ce qui devient fastidieux lorsque le lien a un nombre important de cibles ou que des propriétés par cible (comme la priorité) sont définies. Il est également courant pour les administrateurs de renommer ou de déplacer régulièrement des liens.

Les chemins DFS fournis à NetDfsMove peuvent être un lien DFS réel ou simplement un préfixe de chemin de liaison DFS. Les caractères génériques ne sont pas autorisés et seuls les chemins absolus peuvent être spécifiés. Les chemins d’accès relatifs et la syntaxe de nom de chemin d’accès spécial (comme « » ou « . ») ne sont pas autorisés.

Quand un préfixe de chemin de liaison DFS est spécifié au lieu d’un chemin DFS complet, l’opération de déplacement est effectuée sur tous les liens DFS qui contiennent ce préfixe. Par conséquent, un seul appel à NetDfsMove peut « déplacer » plusieurs liens. Toutefois, le préfixe de chemin d’accès doit être résolu en au moins un lien DFS valide, sinon l’opération de déplacement échoue.

Les exemples suivants illustrent différentes opérations de déplacement et les résultats.

    • Ancien chemin : \\MyDfsServer\MyDfsShare\dir1\dir2\link1
    • Nouveau chemin : \\MyDfsServer\MyDfsShare\dir1\dir2\link2
    Après le déplacement, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 est remplacé par \\MyDfsServer\MyDfsShare\dir1\dir2\link2.
    • Ancien chemin : \\MyDfsServer\MyDfsShare\dir1\dir2\link1
    • Nouveau chemin : \\MyDfsServer\MyDfsShare\dir3\dir4\dir5\link2
    Après le déplacement, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 est remplacé par \\MyDfsServer\MyDfsShare\dir3\dir4\dir5\link2. Notez que les composants feuille et non feuille ont été renommés et que le nombre de composants dans le nouveau chemin d’accès a changé.
    • Ancien chemin : \\MyDfsServer\MyDfsShare\dir1
    • Nouveau chemin d’accès : \\MyDfsServer\MyDfsShare\dir3
    Après le déplacement, tous les liens préfixés par \\MyDfsServer\MyDfsShare\dir1 ont ce préfixe remplacé par \\MyDfsServer\MyDfsShare\dir3. Par conséquent, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 et \\MyDfsServer\MyDfsShare\dir1\dir2\link2 sont désormais \\MyDfsServer\MyDfsShare\dir3\dir2\link1 et \\MyDfsServer\MyDfsShare\dir3\dir2\link1, respectivement.
    • Ancien chemin : \\MyDfsServer\MyDfsShare\dir1
    • Nouveau chemin d’accès : \\MyDfsServer\MyDfsShare
    Après le déplacement, tous les liens préfixés par \\MyDfsServer\MyDfsShare\dir1 ont ce préfixe remplacé par \\MyDfsServer\MyDfsShare. Par conséquent, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 et \\MyDfsServer\MyDfsShare\dir1\dir2\link2 sont désormais \\MyDfsServer\MyDfsShare\dir2\link1 et \\MyDfsServer\MyDfsShare\dir2\link1, respectivement.
Si le nouveau chemin d’accès a déjà une entrée existante, DFS_MOVE_FLAG_REPLACE_IF_EXISTS devez être spécifié si le nouveau chemin doit remplacer l’ancien. Lorsque cet indicateur est défini, le chemin d’accès en collision est supprimé et remplacé par le nouveau lien. Notez que toute opération qui peut potentiellement entraîner des liens DFS qui se chevauchent complètement échoue, que DFS_MOVE_FLAG_REPLACE_IF_EXISTS soit spécifié ou non. Par exemple :
  • Liens existants : \\MyDfsServer\MyDfsShare\dir1\link1, \\MyDfsServer\MyDfsShare\link3
  • Ancien chemin:\\MyDfsServer\MyDfsShare\dir1
  • Nouveau chemin : \\MyDfsServer\MyDfsShare\link3
Si l’opération de déplacement était autorisée à réussir, le résultat serait deux liens qui se chevauchent complètement : \\MyDfsServer\MyDfsShare\link3\link1 et \\MyDfsServer\MyDfsShare\link3. Par conséquent, l’opération de déplacement doit échouer.

Avec les serveurs DFS basés sur un domaine, l’opération de déplacement est atomique ; autrement dit, soit l’opération entière est effectuée, soit elle échoue. Toutefois, avec les serveurs DFS autonomes, l’opération de déplacement n’est pas garantie atomique. Dans ce cas, une défaillance peut entraîner une opération de déplacement partiellement terminée et nécessiter un nettoyage pour le compte de l’application appelante.

Lorsque l’opération de déplacement réussit, il est garanti que les métadonnées DFS ont été correctement modifiées. Cela ne garantit pas que les liens DFS ont été réellement créés sur les cibles racine ou que les liens DFS peuvent être créés sur le stockage des cibles racines.

Configuration requise

   
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008, Windows Server 2008
Plateforme cible Windows
En-tête lmdfs.h (include LmDfs.h, Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

Fonctions de système de fichiers distribués (DFS)

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau