Confidencial de WindowsRecuérdeme no volver a hacer eso nunca más

Raymond Chen

Hay una antigua herramienta para la serie de sistemas operativos Windows® 95 conocida como Automatic Skip Driver (Controlador de omisión automática).Quizás su primera reacción ante la herramienta se centre en su confuso nombre, incluso puede haber sospechado que las siglas ASD tenían un significado distinto al principio.Y tiene razón.

Windows 95 tuvo que adaptarse a una gran cantidad de dispositivos que no eran Plug and Play, ya que la inmensa mayoría de los sistemas existentes en aquel momento eran anteriores a la especificación Plug and Play.La detección de hardware antes de los dispositivos Plug and Play constituía una tarea muy complicada.

Por ejemplo, la detección del módem se llevaba a cabo mediante la emisión de consultas de valores de decenas de registros de módem.Aunque había un conjunto básico y muy sólido de comandos de módem, existía una variación considerable en la implementación de los rincones más desconocidos del lenguaje de comandos.No es sorprendente, por tanto, que esta incoherencia fuera frustrante para los programas de comunicaciones, puesto que requería la adición de casos especiales para varios modelos de módem con el objeto de acomodar sus peculiaridades individuales. Sin embargo, la incoherencia fue una bendición accidental para Windows:puesto que cada módem se comportaba de una manera sutilmente distinta, Windows podría investigar estos rincones desconocidos y comparar el comportamiento del módem con una tabla de los módems conocidos y sus respuestas.

  

Había una persona en el equipo de Windows 95 cuyo trabajo consistía en instalar cualquier módem conocido y ejecutar un pequeño programa que ponía a prueba el módem. Esta persona decidió explorar los rincones desconocidos y reunir los resultados de cada módem para crear una base de datos exhaustiva de estos dispositivos.Si aún le es posible obtener acceso a un equipo que ejecute Windows 95, puede echar un vistazo al directorio Windows\Inf y verá todos aquellos archivos cuyos nombres empiezan con MDM.Hay alrededor de un megabyte de archivos de información de dispositivo dedicados a los módems.Esto supone varios años de trabajo condensados en un megabyte de números hexadecimales ilegibles.

La detección de módems era bastante segura, puesto que prácticamente todos los módems se comportaban más o menos del mismo modo a grandes rasgos; la emoción recaía en los detalles.Era mucho peor la detección con dispositivos que usaban puertos de E/S.Por ejemplo, para detectar si estaba instalada una tarjeta de vídeo específica, el módulo de detección de tarjetas de vídeo del Administrador de configuración de Windows 95 enviaba los valores cuidadosamente seleccionados por puertos de E/S específicos y escuchaba cualquier respuesta del dispositivo.Si el dispositivo respondía de la manera correcta, se suponía entonces que había encontrado lo que buscaba.Si no, seguía adelante con el siguiente modelo de tarjeta de vídeo.

Por supuesto, si el dispositivo instalado en el puerto de E/S no era la tarjeta de vídeo que el Administrador de configuración estaba probando, podía resultar bastante molesto que alguien enviara al dispositivo valores que carecían de sentido.Según el "humor" del dispositivo, este podía bloquear o reiniciar el equipo.Esto no constituyó un buen presagio para el Administrador de configuración.Así es como surgió el módulo conocido como ASD.

Antes de llevar a cabo estas pruebas de hardware potencialmente dañinas, el Administrador de configuración creaba un archivo que, básicamente, decía: "¡Oh, no!¡Estoy a punto de llevar a cabo la acción peligrosa X!"Esta era la versión informática de la mítica frase "Abrir en caso de fallecimiento" que aparecía en el sobre que entregaba el héroe de la película a su novia antes de embarcarse en una misión suicida de lucha contra el enemigo.

Si la acción peligrosa X provocaba, realmente, el bloqueo o reinicio del equipo, en el siguiente inicio del sistema, este vería el archivo mágico y "abriría el sobre" para comprobar que era la acción peligrosa X la que provocó el bloqueo del equipo.El sistema concluía entonces que el intento de detectar el dispositivo X había sido catastrófico y sabía que no debía volver a hacerlo nunca más.

El módulo que se encargaba de esta tarea se denominaba ASD.Las siglas ASD significaban "Attempting Something Dangerous" ("Intentando algo peligroso").

Raymond Chen, The Old New Thing, y en su libro homónimo (Addison-Wesley, 2007) se trata la historia de Windows y la programación Win32.Tiene cuidado porque el plato quema.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.