Конфиденциально о Windows Напомните мне никогда больше этого не делать

Раймонд Чен

Существует старое средство для серии операционных систем Windows® 95, известное как Automatic Skip Driver («драйвер автоматического пропуска»). Одной из первых мыслей об этом средстве обычно является удивление по поводу его странного имени и даже подозрение, что аббревиатура ASD поначалу имела иное значение. Данное подозрение верно.

Windows 95 приходилось иметь дело со множеством устройств без возможности Plug and Play, поскольку подавляющее большинство систем того времени появились до выхода спецификаций Plug and Play. Обнаружение оборудования в отсутствии настоящих устройств Plug and Play было весьма пугающим занятием.

Например, обнаружение модема осуществлялось путем отправки запросов значений десятков регистров модема. Несмотря на наличие достаточно стандартного базового набора команд для модема, в темных углах программного языка возникали существенно отличающиеся варианты реализации. Неудивительно, что возникавшее отсутствие единообразия создавало помехи для программ связи, поскольку требовало дополнения специальных случаев для различных моделей модемов, учитывающих их индивидуальные особенности; однако, все то же отсутствие единообразия стало нечаянным подарком для Windows: поскольку в поведении каждого модема были мелкие различия, Windows могла исследовать эти темные углы и сравнивать поведение модема с таблицей известных модемов и их ответов.

  

В группе разработчиков Windows 95 был человек, работа которого заключалась в установке чуть ли не каждого доступного когда-либо модема и запуске маленькой программы, всесторонне испытывавшей модем, проверявшей все темные углы и собиравшей результаты для создания исчерпывающей базы данных модемов. Те, у кого еще есть доступ к машине, использующей Windows 95, могут заглянуть в каталог Windows\Inf и полюбоваться на множество файлов, имена которых начинаются с MDM. Это свыше мегабайта информации о устройствах, посвященной модемам. Это несколько лет чьей-то жизни, сжатые в мегабайт нечитаемых шестнадцатеричных цифр.

Обнаружение модемов было достаточно безопасным делом, поскольку все модемы вели себя, в целом, примерно одинаково, вся радость заключалась в мелочах. Гораздо страшнее были устройства, использовавшие порты ввода/вывода. Например, для обнаружения, установлена ли конкретная видеокарта, модуль обнаружения видеокарт диспетчера настройки Windows 95 посылал тщательно выбранные значения нужным портам ввода/вывода и ждал ответов от устройства. Если устройство отвечало верно, диспетчер предполагал, что искомое устройство найдено. Если нет, он переходил на поиск следующей модели видеокарты.

Само собой, если устройство, установленное на этом порте ввода/вывода, не было той видеокартой, которую искал диспетчер настройки, оно могло быть весьма возмущено приходом бессмысленных значений. В зависимости от степени своей обидчивости оно могло вызвать зависание или перезагрузку компьютера. Это не сулило ничего хорошего диспетчеру настройки. Поэтому и появился на свет модуль, известный как ASD.

Перед выполнением этих потенциально опасных прощупываний оборудования диспетчер настройки создавал файл, говоривший, по сути: «О нет! Я собираюсь выполнить опасное действие N!» Это была компьютерная версия классического конверта «Вскрыть в случае моей смерти», который герой боевика оставляет своей девушке перед отправкой на смертельную схватку со злодеем.

Если опасное действие N действительно вызывало зависание или перезагрузку, то при следующем запуске системы он видел этот волшебный файл и «открывал конверт», чтобы увидеть, что сбой системы был вызван опасным действием N. Из этого система заключала, что попытка обнаружить устройство N оказалась катастрофической и понимала, что больше этого делать не стоит!

Модуль, выполнявший эту работу, был назван ASD. Аббревиатура ASD была сокращением от "Attempting Something Dangerous" («Попытка сделать нечто опасное»).

Раймонд Ченна своем веб-узле The Old New Thing (Хорошо забытое старое) и в одноименной книге (изд-во Addison-Wesley, 2007 г.) рассказывает об истории развития Windows и касается вопросов программирования в среде Win32. Он осторожен, поскольку плита уж очень горяча.

© 2008 Корпорация Майкрософт и компания CMP Media, LLC. Все права защищены; полное или частичное воспроизведение без разрешения запрещено.