MoveFileWithProgressW, fonction (winbase.h)
Déplace un fichier ou un répertoire, y compris ses enfants. Vous pouvez fournir une fonction de rappel qui reçoit des notifications de progression.
Pour effectuer cette opération en tant qu’opération transactionnelle, utilisez la fonction MoveFileTransacted.
Syntaxe
BOOL MoveFileWithProgressW(
[in] LPCWSTR lpExistingFileName,
[in, optional] LPCWSTR lpNewFileName,
[in, optional] LPPROGRESS_ROUTINE lpProgressRoutine,
[in, optional] LPVOID lpData,
[in] DWORD dwFlags
);
Paramètres
[in] lpExistingFileName
Nom du fichier ou du répertoire existant sur l’ordinateur local.
Si dwFlags spécifie MOVEFILE_DELAY_UNTIL_REBOOT, le fichier ne peut pas exister sur un partage distant, car les opérations retardées sont effectuées avant la disponibilité du réseau.
Par défaut, le nom est limité à MAX_PATH caractères. Pour étendre cette limite à 32 767 caractères larges, ajoutez « \\ ?\ » au chemin d’accès. Pour plus d’informations, consultez nommage des fichiers, des chemins d’accès et des espaces de noms.
Pourboire
À compter de Windows 10, version 1607, vous pouvez choisir de supprimer la limitation MAX_PATH sans précéder « \\ ?\ ». Pour plus d’informations, consultez la section « Limite maximale de longueur de chemin » de noms, fichiers, chemin s et espaces de noms.
[in, optional] lpNewFileName
Nouveau nom du fichier ou du répertoire sur l’ordinateur local.
Lors du déplacement d’un fichier, lpNewFileName peut se trouver sur un autre système de fichiers ou volume. Si lpNewFileName se trouve sur un autre lecteur, vous devez définir l’indicateur MOVEFILE_COPY_ALLOWED dans dwFlags.
Lors du déplacement d’un répertoire, lpExistingFileName et lpNewFileName doivent se trouver sur le même lecteur.
Si dwFlags spécifie MOVEFILE_DELAY_UNTIL_REBOOT et lpNewFileName est NULL , MoveFileWithProgress inscrit lpExistingFileName à supprimer lorsque le système redémarre. La fonction échoue si elle ne peut pas accéder au Registre pour stocker les informations relatives à l’opération de suppression. Si lpExistingFileName fait référence à un répertoire, le système supprime le répertoire au redémarrage uniquement si le répertoire est vide.
Par défaut, le nom est limité à MAX_PATH caractères. Pour étendre cette limite à 32 767 caractères larges, ajoutez « \\ ?\ » au chemin d’accès. Pour plus d’informations, consultez nommage des fichiers, des chemins d’accès et des espaces de noms.
Pourboire
À compter de Windows 10, version 1607, vous pouvez choisir de supprimer la limitation MAX_PATH sans précéder « \\ ?\ ». Pour plus d’informations, consultez la section « Limite maximale de longueur de chemin » de noms, fichiers, chemin s et espaces de noms.
[in, optional] lpProgressRoutine
Pointeur vers un CopyProgressRoutine fonction de rappel appelée chaque fois qu’une autre partie du fichier a été déplacée. La fonction de rappel peut être utile si vous fournissez une interface utilisateur qui affiche la progression de l’opération. Ce paramètre peut être NULL.
[in, optional] lpData
Argument à passer à la fonction de rappel CopyProgressRoutine. Ce paramètre peut être NULL.
[in] dwFlags
Options de déplacement. Ce paramètre peut être une ou plusieurs des valeurs suivantes.
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. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Lors du déplacement d’un fichier sur plusieurs volumes, si lpProgressRoutine retourne PROGRESS_CANCEL en raison de l’annulation de l’opération par l’utilisateur, MoveFileWithProgress retourne zéro et GetLastError retourne ERROR_REQUEST_ABORTED. Le fichier existant est conservé intact.
Lors du déplacement d’un fichier sur plusieurs volumes, si lpProgressRoutine retourne PROGRESS_STOP en raison de l’arrêt de l’opération par l’utilisateur, MoveFileWithProgress retourne zéro et GetLastError retourne ERROR_REQUEST_ABORTED. Le fichier existant est conservé intact.
Remarques
La fonction MoveFileWithProgress coordonne son opération avec le service de suivi des liens, afin que les sources de liens puissent être suivies à mesure qu’elles sont déplacées.
Pour supprimer ou renommer un fichier, vous devez disposer d’une autorisation de suppression sur le fichier ou supprimer l’autorisation enfant dans le répertoire parent. Si vous configurez un répertoire avec tous les accès, à l’exception de la suppression et de la suppression d’enfants et que les listes de contrôle d’accès des nouveaux fichiers sont héritées, vous devez être en mesure de créer un fichier sans pouvoir le supprimer. Toutefois, vous pouvez ensuite créer un fichier et obtenir tout l’accès que vous demandez sur le handle retourné au moment de la création du fichier. Si vous avez demandé l’autorisation de suppression au moment de la création du fichier, vous pouvez supprimer ou renommer le fichier avec ce handle, mais pas avec d’autres.
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 | Oui |
Basculement transparent SMB 3.0 (TFO) | Oui |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Oui |
Cluster Shared Volume File System (CsvFS) | Oui |
Système de fichiers résilient (ReFS) | Oui |
Les fichiers CSV effectuent des E/S redirigés pour les fichiers compressés.
Note
L’en-tête winbase.h définit MoveFileWithProgress 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 XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winbase.h (inclure Windows.h) |
bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |