La fonction «Vérifier le disque» est idéale pour vous assurer que votre disque fraîchement gravé s’est bien déroulé, mais comment cela fonctionne-t-il exactement? Le post de questions-réponses des superutilisateurs d’aujourd’hui a la réponse à la question d’un lecteur curieux.
La question
Le lecteur SuperUser user1301428 souhaite savoir comment les disques sont vérifiés après leur gravure:
Que fait la vérification du disque après la gravure pour vérifier les données? J’imagine que c’est une sorte de comparaison entre les fichiers originaux et les fichiers qui ont été gravés sur le disque, mais est-ce que quelqu’un sait comment cela se fait vraiment à bas niveau?
Je veux dire, est-ce que cela crée un hachage du contenu source et de destination, puis les compare? Si tel est le cas, stocke-t-il le hachage du contenu gravé dans la RAM? Ou l’enregistre-t-il dans un fichier temporaire sur le disque dur? Existe-t-il un fichier journal de ce qui se passe?
Je suis simplement curieux de savoir exactement comment fonctionne cette fonctionnalité. Et je fais référence à Windows Image Burner.
Comment fonctionne le processus de vérification du disque?
La réponse
Les contributeurs SuperUser Frank Thomas et Synetech ont la réponse pour nous. Tout d’abord, Frank Thomas:
Consultez ces pages MSDN sur l’API Windows pour IBurnVérification interface et le IMAPI_BURN_VERIFICATION_LEVEL enum.
Pour les disques de données, il semble qu’en mode rapide, il ne vérifie pas la totalité du disque, juste une sélection de secteurs. Il s’assure ensuite que l’API appelle READ_DISC_INFO et READ_TRACK_INFO réussissent sur le nouveau disque.
Pour une vérification complète, il effectue les vérifications ci-dessus, puis effectue une somme de contrôle complète sur la dernière session sur le nouveau disque par rapport à une somme de contrôle calculée sur le flux de mémoire en cours de gravure. Les sommes de contrôle doivent être stockées dans la mémoire vive, mais ce sont probablement des valeurs de courte durée. Notez que la comparaison est avec l’image du disque dans la RAM, pas le support source lui-même, donc si les données source ne sont pas lues correctement, elles seront mal écrites. La vérification ne détectera pas cela.
Pour les disques musicaux, il se concentre sur la vérification de READ_TRACK_INFO et de la table des matières du disque, mais n’effectue pas de calcul de somme de contrôle. Il n’y a pas de mode de vérification complet pour la musique.
Suivi de la réponse de Synetech:
Frank a bien expliqué la vérification spécifique à Windows. Je vais donner une réponse plus générale.
- Que fait réellement Vérifier le disque après la gravure pour vérifier les données?
- Je veux dire, est-ce que cela crée un hachage du contenu source et de destination, puis les compare? Si tel est le cas, stocke-t-il le hachage du contenu gravé dans la RAM? Ou l’enregistre-t-il dans un fichier temporaire sur le disque dur? Existe-t-il un fichier journal de ce qui se passe?
C’est certainement une façon d’implémenter une comparaison: hacher un fichier (avec un peu de chance avec un algorithme de risque de collision suffisamment grand – lecture faible), répéter pour l’autre et comparer les hachages. Si c’est ainsi qu’une vérification est mise en œuvre, vous pourrez alors voir le voyant du lecteur clignoter pendant un moment, puis le CD / DVD-LED clignote pendant un certain temps.
Une autre façon de mettre en œuvre la vérification est de lire un bloc d’un fichier, puis le même bloc de l’autre fichier, de les comparer, puis de répéter jusqu’à ce que la fin du fichier soit atteinte. Dans ce cas, vous verrez les LED des deux disques alterner dans les deux sens.
Bien sûr, si le disque dur et le lecteur optique n’ont pas de LED, cela ne sera pas aussi évident. Mais vous pouvez toujours le voir avec quelque chose comme ProcessMonitor car il enregistrera une série de lectures de l’un, puis de l’autre, soit en une seule, grande rafale, soit en alternance de petites rafales.
- J’imagine que c’est une sorte de comparaison entre les fichiers originaux et les fichiers qui ont été gravés sur le disque, mais est-ce que quelqu’un sait comment cela se fait vraiment à bas niveau?
En fait, tout ce qu’il fait est de vider le cache du lecteur afin que la fonction de comparaison lise les données du disque réel plutôt que du cache de la mémoire. De toute évidence, il s’agit d’une étape critique car si la vérification est effectuée à partir du cache, elle ne représente pas ce qui se trouve réellement sur le disque, de sorte que la corruption peut facilement passer.
Vous pouvez voir si une comparaison est effectuée à partir du lecteur ou du cache de la RAM en fonction de la vitesse à laquelle elle se produit. Si vous faites manuellement une simple comparaison (c’est-à-dire avec WinDiff, WinMerge, ou en les hachant avec un outil de hachage), vous remarquerez que la comparaison se produit beaucoup plus rapidement que prévu car elle lit les fichiers depuis le cache mémoire. Vous devez vider le cache pour le forcer à lire à partir du disque réel. Pour les lecteurs optiques (et autres supports amovibles tels que les lecteurs flash et les cartes mémoire), il suffit d’éjecter le lecteur pour vider le cache, mais pour les disques durs, ce n’est pas aussi simple (même si généralement cela n’a pas d’importance car le la nouvelle copie est celle que vous souhaitez tester).
Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.