Faut-il encore « retirer le périphérique en toute sécurité » ? — Réfléchir à partir du retrait rapide et du cache d'écriture

· Mis à jour le: · · Windows, USB, Stockage, Investigation d'incidents

Vous avez copié vos fichiers sur une clé USB. L’écran a indiqué que la copie était terminée. Et pourtant, avant de la débrancher, on vous demande de passer encore une fois par « Retirer le périphérique en toute sécurité ».

C’était censé être fini — que reste-t-il donc à finir ?

Les données qu’une application a transmises à Windows peuvent encore attendre sur le PC d’être écrites. Suivons un seul fichier sur son chemin vers la clé USB.1

On suppose ici un stockage USB connecté à Windows 11. Le transfert de fichiers depuis un smartphone et les cas analogues sont hors sujet.

1. Avant que quoi que ce soit n’atteigne la clé USB, le PC le retient

Pour cette explication, découpons le fichier en trois morceaux : A, B et C. L’application les transmet à Windows dans l’ordre et demande qu’ils soient écrits sur la clé USB.

S’il fallait attendre chaque écriture sur la clé USB, l’application attendrait elle aussi. Windows peut donc répondre dès qu’il a pris les données dans la mémoire du PC, et les écrire sur la clé USB plus tard. L’objectif est de ne pas faire attendre l’application et de traiter ensemble les petites écritures. Cette zone de rétention temporaire est le cache d’écriture.12

Considérez l’instant où Windows a reçu A, B et C, mais n’a réussi à écrire que A et B sur la clé USB. C attend son tour sur le PC.

Pour un même fichier, ce que le PC a reçu et ce que la clé USB a enregistré diffèrentMontre l'instant où Windows a reçu A, B et C, où A et B sont enregistrés sur la clé USB, et où C attend encore d'être écrit dans le cache côté PC.Windows a reçu A, B et CLa mémoire du PC retient C, en attente d'écritureEnregistré sur la clé USB : A et B seulement

Figure 1 : L’application a tout transmis. Malgré cela, à cet instant, C n’est pas encore sur la clé USB.

Débranchez maintenant et C, resté sur le PC, n’atteindra jamais la clé USB. Une partie du fichier que vous emportez manque.

L’application a tout transmis. Mais la clé USB n’a pas encore tout. Dans une conception qui diffère les écritures, ces deux affirmations peuvent être vraies en même temps.

Le moment où apparaît le message de fin dépend de l’application et des paramètres. Cet exemple n’affirme pas qu’il reste toujours des écritures après que l’Explorateur de fichiers a signalé la fin.2

Dans le diagramme, un trait continu marque une relation qui vaut toujours et un trait pointillé une relation conditionnelle (les conditions figurent dans l’explication de chaque relation sur la page de détail). La liste complète des relations (6 au total, avec preuve et niveau de certitude) et les définitions des concepts principaux sont rassemblées sur la page de détail de la carte des connaissances (en japonais). Données : JSON-LD / Turtle

2. Terminez l’écriture de ce qui a été retenu avant de débrancher

Comment débrancher la clé USB sans laisser C derrière soi ?

« Retirer le périphérique en toute sécurité » est l’action qui indique à Windows : ce périphérique va sortir, termine donc les écritures restantes. Achever les opérations encore présentes dans le cache fait partie de ses tâches.3

Pour le fichier ci-dessus, cela signifie écrire C, qui était encore sur le PC, et attendre que la clé USB contienne elle aussi A, B et C.

Comment la même écriture en attente C se termine selon la manière de retirer le lecteurSi la connexion est coupée alors que C est encore sur le PC, la clé USB ne contient que A et B ; si C est écrit pendant que le lecteur est encore connecté, la clé USB contient A, B et C.Débrancher avant d'écrire CÉcrire C pendant que la connexion tientC est sur le PC, en attente d'écritureLa clé USB n'a que A et BLa clé USB a A, B et C

Figure 2 : Ce que vous voulez attendre avec « Retirer le périphérique en toute sécurité » n’est pas l’écoulement du temps mais l’achèvement des écritures restantes.

Attendre simplement un peu avant de débrancher ne vous dit rien sur ce qui reste. L’action de retrait demande à Windows d’exécuter le travail de clôture, et vous pouvez attendre la notification indiquant que le périphérique peut être retiré.4

Le paramètre « Meilleures performances » de Windows est la stratégie qui autorise ce cache. En échange du regroupement des écritures pour plus d’efficacité, vous devez exécuter « Retirer le périphérique en toute sécurité » avant de débrancher.3

3. « Retrait rapide », la stratégie qui ne diffère rien

Vous vous dites peut-être : si le reste doit de toute façon être écrit avant de débrancher, pourquoi laisser quoi que ce soit sur le PC au départ ?

C’est exactement ce qu’est « Retrait rapide ». Windows ne met pas en cache les écritures destinées au périphérique concerné, ce qui permet d’omettre l’étape de retrait. Autrement dit, il n’emploie pas l’approche consistant à laisser C sur le PC pour l’écrire plus tard.3

Le travail d’écriture sur la clé USB subsiste. Il y a moins de marge pour regrouper les écritures par souci d’efficacité, et les performances peuvent baisser, mais en échange le lecteur devient plus facile à retirer.3

Une stratégie qui diffère les écritures et une qui ne le fait pasAvec Meilleures performances, le PC peut retenir des écritures en attente mais leur achèvement doit être confirmé au moment du retrait, tandis qu'avec Retrait rapide Windows ne diffère pas les écritures de cette manière.Meilleures performancesLe PC peut retenir des écrituresÉcrire le reste avant de débrancherRetrait rapideLes écritures ne sont pas différéesL'étape de retrait après votre travail peut être omise

Figure 3 : Le travail d’écriture sur la clé USB ne disparaît pas ; ce qui change, c’est s’il est différé.

Depuis Windows 10 version 1809, « Retrait rapide » est la valeur par défaut. C’est le fondement des affirmations selon lesquelles on peut désormais simplement retirer la clé. Le paramètre peut toutefois être modifié périphérique par périphérique.3

En bref : terminez-vous le travail différé avant de débrancher, ou ne le différez-vous jamais ? Les deux affirmations — le retrait sécurisé est nécessaire, il est inutile — découlent toutes deux de cette différence de paramètre.

Même avec « Retrait rapide », cela ne signifie pas que vous pouvez interrompre une copie ou un enregistrement en cours. Attendez la fin de l’opération et enregistrez d’abord les modifications non sauvegardées.5

4. Sur quel paramètre est réglée votre propre clé USB ?

Dans l’Explorateur de fichiers, repérez le nom et la lettre du lecteur USB concerné.

Faites un clic droit sur le bouton Démarrer, ouvrez Gestion des disques et faites un clic droit sur l’étiquette du périphérique correspondant dans la liste inférieure. « Propriétés > Stratégies » indique laquelle des deux options est sélectionnée.3

Si « Stratégies » n’apparaît pas, il existe aussi une disposition où vous sélectionnez le lecteur dans l’onglet « Matériel » et ouvrez les propriétés depuis là. Si vous ne faites que consulter, ne modifiez pas le paramètre. Si vous ne pouvez pas effectuer ces étapes sur un PC d’entreprise, adressez-vous à votre administrateur.3

Si vous ignorez le paramètre, utiliser « Retirer le périphérique en toute sécurité » est la pratique la plus simple à suivre. Terminez vos enregistrements et vos copies, puis fermez les applications qui utilisent la clé USB. Choisissez le périphérique sous « Retirer le périphérique en toute sécurité et éjecter le média » dans la zone de notification, et débranchez-le une fois que la notification indique que le périphérique peut être retiré. Si l’icône est masquée, ouvrez la liste des icônes masquées.4

Lorsque plusieurs périphériques sont connectés, vérifiez que le nom sélectionné correspond bien à la clé USB que vous débranchez.

5. Pourquoi indique-t-il que le périphérique est utilisé alors que la copie est terminée ?

A, B et C du fichier ont tous été écrits sur la clé USB. Mais si l’application avec laquelle vous avez vérifié le contenu garde encore le fichier ouvert, l’action suivante pourrait le relire ou le réécrire.

Le processus de retrait vérifie aussi si ce type d’utilisation peut prendre fin. Lorsqu’un handle — la référence qu’une application utilise pour travailler sur un fichier — est encore ouvert, le retrait peut être refusé alors même que les lectures et les écritures ont cessé.67

Une application en cours d'utilisation reste attachée à des fichiers déjà écritsMême lorsque A, B et C sont tous enregistrés sur la clé USB, une application qui garde un handle sur les fichiers peut bloquer le retrait du périphérique.Garde un handleApplication qui garde encore le fichier ouvertFichiers sur la clé USB : A, B et CLa référence subsiste même quand lectures et écritures cessent

Figure 4 : C’est le cas où la raison pour laquelle vous ne pouvez pas retirer le périphérique n’est pas une donnée manquante mais le fait que le périphérique est encore utilisé.

Dans ce cas, ne vous contentez pas d’attendre : enregistrez ce qui doit l’être et fermez l’application. Fermez aussi toute fenêtre de l’Explorateur de fichiers affichant la clé USB, puis réessayez le retrait.

Si rien ne vous vient à l’esprit, recherchez dans Process Explorer le nom du fichier ou du dossier sur la clé USB et découvrez quel processus le garde ouvert. Évitez de fermer de force un handle ainsi trouvé, car cela peut déstabiliser l’application ou le système. Fermez l’application par sa procédure normale, et pour une application métier ou un service, voyez avec la personne responsable.87

Ce n’est qu’un exemple de cause. Pour les méthodes d’investigation détaillées, voir Comment utiliser Process Explorer et Handle.

6. Une note pour les développeurs d’applications : ce que signifie « Enregistrement terminé »

Décidez délibérément si votre application annonce « Enregistrement terminé » dès que les données ont été transmises à Windows, ou seulement après avoir vérifié le résultat des écritures dont elle a besoin.

L’API Win32 FlushFileBuffers écrit les données mises en tampon pour le fichier spécifié. Un appel sur un handle de fichier ordinaire n’enregistre pas le document non sauvegardé d’une autre application et ne met pas fin à l’utilisation de toute la clé USB.2

Avant et après le cache de Windows, il y a aussi les données non enregistrées à l’intérieur de l’application et le cache interne du périphérique. « Retrait rapide » n’est pas un paramètre qui élimine tout cela.9

Chaque endroit qui retient des données a un propriétaire différentMontre les données non enregistrées dans l'application, le cache de fichiers côté Windows et le cache côté périphérique, dans l'ordre où les données les traversent.Opération d'enregistrementÉcriture sur le périphériqueDans l'application : modifications non enregistréesCôté Windows : le cache de fichiersCôté périphérique : cache interne et support

Figure 5 : Le fait que des données subsistent dans chaque couche dépend des paramètres et de l’implémentation. Ne prenez pas le paramètre d’une couche pour la vérification d’achèvement d’une autre.

Une application qui traite les notifications de retrait a aussi besoin d’un nettoyage, comme la fermeture de ses handles de périphérique.10 Le choix entre les API est traité dans l’article sur le Cache Manager et WriteFile.

Résumé

Ce que vous pouvez emporter sur une clé USB, ce sont les données dont l’écriture y est achevée. Si vous ignorez le paramètre, terminez votre travail et utilisez « Retirer le périphérique en toute sécurité ». Pour les fichiers importants, conservez une copie ailleurs que sur la clé USB.

Articles liés

Liens de référence

  1. Microsoft Learn, File Caching. Le cache de fichiers en mémoire, l’écriture différée et le rôle du vidage.  2

  2. Microsoft Learn, FlushFileBuffers function. Les écritures ordinaires par rapport au vidage des données mises en tampon. Vider un fichier et retirer un périphérique sont deux choses différentes.  2 3

  3. Microsoft Learn, Manage default media removal policy. La différence entre « Retrait rapide » et « Meilleures performances », la modification de la valeur par défaut et la vérification du paramètre par périphérique.  2 3 4 5 6 7

  4. Microsoft Support, Safely remove hardware in Windows. L’action de retrait depuis la zone de notification et la notification indiquant que le périphérique peut être retiré.  2

  5. Microsoft Learn, Handling an IRP_MN_SURPRISE_REMOVAL Request. Les échecs d’E/S et le nettoyage qui suivent une déconnexion inattendue du périphérique. 

  6. Microsoft Learn, Handling an IRP_MN_QUERY_REMOVE_DEVICE Request. La vérification avant le retrait, les handles ouverts et la façon dont le système de fichiers et les applications répondent. 

  7. Microsoft Learn, Handle. L’examen des références de fichiers ouvertes et l’avertissement concernant la fermeture forcée de handles.  2

  8. Microsoft Learn, Process Explorer. La recherche du processus qui garde ouvert un fichier ou un répertoire donné. 

  9. Microsoft Learn, File Buffering. La distinction entre les tampons de fichiers côté Windows et le cache côté matériel. 

  10. Microsoft Learn, DBT_DEVICEQUERYREMOVE event. Comment une application se prépare au retrait et ferme ses handles de périphérique. 

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

Faut-il encore retirer une clé USB en toute sécurité sous Windows 11 ?
Cela dépend de la stratégie de retrait du périphérique concerné. « Retrait rapide » est conçu pour que cette étape puisse être omise ; avec « Meilleures performances », vous devez exécuter « Retirer le périphérique en toute sécurité ». Si vous ignorez le paramètre, le plus simple est de terminer vos enregistrements et vos copies, de fermer les applications qui utilisent la clé, puis de lancer l'action de retrait.
Avec « Retrait rapide », puis-je débrancher la clé pendant une copie ?
Non. « Retrait rapide » est une stratégie qui empêche Windows de mettre les écritures en cache et de les différer. Ce n'est pas une fonction qui complète des données que vous n'avez pas encore transmises, et elle n'autorise pas à interrompre une copie ou un enregistrement en cours.
Où vérifier si un lecteur est réglé sur « Retrait rapide » ?
Repérez la lettre et le nom du lecteur USB dans l'Explorateur de fichiers, ouvrez les propriétés du périphérique correspondant dans Gestion des disques et consultez l'onglet « Stratégies ». Si l'onglet n'apparaît pas, sélectionnez le périphérique dans l'onglet « Matériel » et ouvrez ses propriétés depuis là. La disposition varie selon les environnements, et il n'est pas nécessaire de modifier le paramètre pour le consulter.
Pourquoi Windows indique-t-il que le périphérique est utilisé alors que les écritures sont terminées ?
Si une application garde encore un fichier ou un dossier ouvert, l'utilisation du périphérique n'est pas forcément terminée, même si le trafic s'est momentanément arrêté. Enregistrez et fermez d'abord les fichiers concernés, vérifiez que les copies et les sauvegardes sont terminées, puis réessayez le retrait. Au besoin, utilisez Process Explorer pour trouver le processus qui les garde ouverts, mais évitez de fermer des handles de force.
Si j'utilise « Retirer le périphérique en toute sécurité », un document que j'ai oublié d'enregistrer sera-t-il écrit sur la clé USB ?
Non. « Retirer le périphérique en toute sécurité » ne remplace pas la commande Enregistrer d'une application. Enregistrez d'abord le document et vérifiez que l'application a signalé la fin de l'opération. Ne conservez pas des données importantes uniquement sur une clé USB : gardez-en aussi une copie ailleurs.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog