5 votes

Reproduire le code d'erreur ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 de ReplaceFile

J'utilise le RemplacerFichier Fonction Win32 dans le cadre d'une opération pour obtenir un comportement atomique.

Sur les trois codes d'erreur spéciaux pour cette fonction, j'ai pu en reproduire deux et les récupérer (rollback) : ERROR_UNABLE_TO_MOVE_REPLACEMENT et ERROR_UNABLE_TO_REMOVE_REPLACED.

Mes questions portent sur le troisième code d'erreur : ERROR_UNABLE_TO_MOVE_REPLACEMENT _2 .

  1. Quelqu'un a-t-il vu ce code d'erreur renvoyé ? Dans quelles conditions cela est-il possible ?
  2. Des idées sur la manière de reproduire cette erreur afin que je puisse tester le chemin d'accès dans mon code qui récupère l'erreur ?
  3. J'ai cru comprendre dans la documentation que pour récupérer (rollback) cette erreur, je devais renommer le fichier remplacé à son nom d'origine, parce que ReplaceFile l'aura laissé avec le nom du fichier de sauvegarde. Quelqu'un peut-il vérifier que c'est bien l'état dans lequel ReplaceFile laisse les fichiers ?

Quelques détails supplémentaires au cas où cela serait utile :

  • ReplaceFile est appelé avec un nom de fichier de sauvegarde non NULL (en fait, ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 ne peut pas se produire si un nom de sauvegarde NULL est donné).
  • Je passe également l'option REPLACEFILE_WRITE_THROUGH.
  • Les fichiers existent tous sur le même volume NTFS.

1voto

Eric Brown Points 9233

ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 se produit lorsque les attributs et les flux de données secondaires ont été attachés au fichier de remplacement, mais que le fichier principal lui-même ne peut pas être remplacé.

Votre hypothèse concernant la récupération est correcte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X