Windows ConfidentialUn bienfait « discutable »

Raymond Chen

Lors de l'insertion d'un CD ou d'un DVD, l'interpréteur de commandes « détecte » le disque pour déterminer son type de contenu. Cette détermination guide ensuite l'interpréteur de commandes lorsqu'il doit choisir l'action d'exécution automatique à exécuter. La façon précise dont la détection s'effectue n'est pas décrite car il s'agit d'une méthode heuristique susceptible de changer à l'avenir si un meilleur algorithme est trouvé.

Décrire cet algorithme de façon formelle le rendrait contractuel et l'empêcherait par là même d'être affiné dans les versions subséquentes. Officiellement, donc, les détails de l'algorithme ne sont pas spécifiés.

Si vous n'avez jamais rédigé de documentation pour un SDK, vous n'avez peut-être pas conscience que cette documentation mène au contrat. Une fois que vous avez déclaré publiquement qu'un élément se comporte d'une certaine façon, vous ne pouvez plus le modifier. En effet, si vous le modifiez, les gens qui comptaient sur ce comportement diront, « Hé, ce n'est pas ce que dit la documentation. Vous modifiez les règles en cours de route. »

Ceci étant dit, voici une description rapide et incroyablement simplifiée de la façon dont Windows® XP Service Pack 2 (SP2) classe les contenus des CD et DVD de données dépourvus de fichier autorun.inf. (Les service packs futurs et les versions futures de Windows se comporteront peut-être différemment.) Si j'ai dit « incroyablement simplifiée », c'est parce que le véritable algorithme est une table de décisions comportant 61 étapes qui prend en considération toutes sortes d'informations. Il cherche notamment à déterminer si l'application en premier plan a répondu ou non à la notification « Query cancel autoplay » (Exécution automatique d'annulation de requête), si un programme en mode plein écran s'exécute et même si l'ordinateur est un portable qui a récemment été connecté à, ou déconnecté de sa console d'accueil. Mais nous allons nous intéresser uniquement à l'étape concernant la détection du contenu.

  

En premier lieu, l'interpréteur de commandes vérifie si l'utilisateur a choisi l'option « Take no action » (Ne rien faire) comme action pour tous les types de contenus. Si tel est le cas, il est inutile de détecter. La décision est simplement « Take no action » (Ne rien faire).

Autrement, l'interpréteur de commandes doit agir. Il examine chaque fichier sur le disque (en explorant jusqu'à quatre annuaires) et classe ces fichiers dans l'une des catégories suivantes en fonction du type qu'il a perçu : image, musique, film.

Les fichiers qui ne correspondent à aucune de ces catégories sont ignorés. Si une seule catégorie est représentée parmi tous les fichiers qui ont été vérifiés (supposons, par exemple, que tous les fichiers figurant sur le disque sont des fichiers de musique), elle détermine le type du disque. Si plusieurs de ces trois catégories sont représentées, on considère que le disque présente un contenu mixte.

Ceci signifie que la présence d'une pochette d'album sur un CD rempli de fichiers de musique conduira Windows XP SP2 à considérer le CD comme un CD à contenu mixte. Voici un parfait exemple de ce qui aurait sans doute besoin d'être affiné. Mais supposons maintenant que cet algorithme a effectivement été modifié et qu'il a été décidé que la présence occasionnelle d'une image sur un CD par ailleurs rempli de fichiers MP3 ne suffirait plus à faire de son contenu un contenu mixte. Il peut se faire qu'une entreprise ait un CD comportant de nombreux fichiers audio et seulement quelques images. Cette entreprise escompte, en fait, que le CD sera détecté comme ayant un contenu mixte. Mais lorsque l'algorithme est modifié, le CD est à tort classé comme CD de musique, ce qui contrarie l'entreprise. À qui incombe maintenant la responsabilité de ce problème ? Peut-on blâmer l'entreprise parce qu'elle a fait confiance au fonctionnement décrit de l'algorithme de détection ? Ou faut-il blâmer Windows qui est responsable de la modification de l'algorithme ?

Surprise : dans Windows Vista™, l'algorithme a été modifié, bien que légèrement. Dans Windows Vista, plusieurs vérifications ont été effectuées dès le début pour court-circuiter l'algorithme lorsque se présentent certaines dispositions de disque bien connues. Par exemple, si un dossier DCIM est présent dans la racine du disque, on suppose alors qu'il est composé d'images numériques. Attendons maintenant de voir si quelqu'un s'en rend compte.

Raymond Chen, appelé The Old New Thing (en anglais), et son livre portant le même titre (Addison-Wesley, 2007) traitent de l'historique de Windows et de la programmation Win32. Raymond se demande à quoi ressemble le soleil.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.