La vie secrète de WindowsOn ne m'y reprendra plus !

Raymond Chen

Il existe un vieil outil pour la série de systèmes d'exploitation Windows® 95 qui s'appelait ASD (Automatic Skip Driver).Votre première réaction face cet à outil concernait peut-être son nom plutôt maladroit, et vous soupçonniez peut-être que les lettres ASD signifiaient autre chose au départ.Et vous aviez raison !

Windows 95 a dû gérer de nombreux périphériques qui n'étaient pas du type Plug and Play, car la vaste majorité des systèmes qui existaient à l'époque étaient antérieurs à la spécification Plug-and-play.La détection de matériel sans périphérique Plug-and-play n'était pas simple.

Par exemple, la détection d'un modem était réalisée par émission de requêtes sur les valeurs de plusieurs dizaines de registres de modem.Malgré l'existence d'une série de commandes de base pour modem assez bien établie, il y avait des variations importantes dans l'implémentation du langage des commandes.Cette incohérence était souvent frustrante en raison des problèmes qu'elle créait au niveau des programmes de communications, car il fallait ajouter des cas spéciaux à divers modèles de modems pour tenir compte de leurs particularités individuelles. Cette incohérence, toutefois, a été une aubaine imprévue pour Windows :puisque chaque modem se comportait d'une manière légèrement différente, Windows pouvait examiner ces différences et comparer le comportement des modems par rapport à un tableau de modems connus et à leurs réactions.

  

Il y avait une personne au sein de l'équipe Windows 95 dont la tâche consistait à installer une quantité de modems qui semblait infinie et à exécuter un petit programme qui mettait ces modems à l'essai, explorait leurs coins et leurs recoins et recueillait les résultats de chacun d'entre eux, ce qui a permis de créer une base de données de modems exhaustive.Si vous avez toujours accès à un ordinateur exécutant Windows 95, vous pouvez jeter un coup d'œil sur le répertoire Windows\Inf et sur tous les fichiers dont les noms commencent par MDM.Il existe plus d'un mégaoctet de fichiers contenant des informations de périphériques sur les modems.Cela représente plusieurs années de la vie d'une personne, réduites en un mégaoctet de nombres hexadécimaux illisibles.

La détection de modem était assez fiable puisque presque tous les modems se comportaient à peu près de la même manière à un haut niveau ; les problèmes résidaient dans les détails.En revanche, les périphériques qui utilisaient les ports E/S étaient beaucoup plus effrayants.Par exemple, pour détecter si une carte vidéo spécifique était installée, le module de détection de carte vidéo du Configuration Manager de Windows 95 envoyait des valeurs soigneusement sélectionnées de ports E/S spécifiques puis surveillait les réponses du périphérique.Si le périphérique répondait correctement, cela signifiait qu'il avait trouvé ce qu'il recherchait.Dans le cas contraire, le détecteur passait au modèle de carte vidéo suivant.

Bien sûr, si le périphérique installé sur ce port E/S n'était pas la carte vidéo testée par Configuration Manager, il prenait souvent mal le fait que quelqu'un lui ait envoyé des valeurs ridicules.Si le périphérique avait un sale caractère, il risquait de cesser de fonctionner ou de redémarrer la machine.Cela n'arrangeait pas les choses pour Configuration Manager.C'est pourquoi le module ASD a été créé.

Avant d'exécuter ces tests de matériel potentiellement catastrophiques, Configuration Manager créait un fichier qui transmettait un message du genre « Attention, je m'apprête à effectuerl'opération dangereuse X ! »C'était la version informatique de la célèbre enveloppe « Ouvrir après ma mort » que le héros d'un film d'action laissait à sa petite amie avant d'effectuer une mission quasi suicidaire contre les méchants.

Si l'opération dangereuse X avait effectivement provoqué l'arrêt, la panne ou le redémarrage de l'ordinateur, au démarrage suivant du système, ce dernier voyait ce fichier magique et « ouvrait l'enveloppe » pour voir que c'était l'opération dangereuse X avait effectivement provoqué l'arrêt du système.Le système concluait alors que la tentative de détection du périphérique X était catastrophique et qu'on ne l'y reprendrait jamais !

Le module qui exécutait cette tâche s'appelait ASD.Les lettres ASD signifiaient « Attempting Something Dangerous » (Tentative d'opération dangereuse).

Raymond Chen, The Old New Thing, et son livre du même titre (Addison-Wesley, 2007) traitent de l’historique de Windows et de la programmation Win32.Il fait attention parce que l'assiette est très chaude.

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