Инженер Microsoft Рэймонд Чен объяснил, что происходит, когда пользователь удерживает клавишу Shift при перезагрузке Windows. Вместо полной перезагрузки системы при этом отображается сообщение «Windows перезагружается».

«Поведение, которое вы наблюдаете, является результатом передачи флага EW_RESTARTWINDOWS старой 16-битной функции ExitWindows. Происходит следующее: 16-битное ядро Windows завершает работу, затем завершает работу 32-битный менеджер виртуальной памяти, процессор возвращается в реальный режим, и управление возвращается к win.com со специальным сигналом, означающим “Можно ли снова запустить Windows в защищенном режиме?”» — написал он.
Win.com — исполняемый файл, загружающий Windows серий 3x и ранее, и позднее в 9x. В Windows 3. x и более ранних этот файл должен запускаться либо вручную из командной строки DOS, либо его можно активировать командой в AUTOEXEC.
Код в win.com выводит сообщение «Пожалуйста, подождите, пока Windows перезагрузится…», а затем пытается вернуть систему в то же состояние, в котором она находилась при первом запуске win.com.
Одной из задач является сброс всех параметров командной строки, переданных win.com. Это громоздкая задача, потому что win.com написан на языке ассемблера, и некоторые глобальные переменные необходимо вернуть к исходным значениям.
«Вы, возможно, помните, что файлам .com при запуске неявно предоставляется вся оставшаяся доступная память, предназначенная для обработки соглашений. Программы могут освободить эту память обратно системе, если хотят сделать её доступной для других программ. В случае win.com он освобождает всю память за пределами своего собственного образа обратно системе, так что остаётся один большой непрерывный блок памяти для загрузки Windows в защищённом режиме», — отметил Чен.
При выделении памяти в том пространстве, которое win.com освободил для Windows в защищённом режиме, та, которая предназначена для обработки соглашений, будет фрагментирована, и попытка вернуть систему в то же состояние, в котором она была при первом запуске win.com не увенчается успехом, потому что ожидаемая структура памяти представляла собой «один гигантский непрерывный блок», пояснил инженер. В этом случае win.com переходит к полной перезагрузке.
В остальном же win.com возвращается к коду, который запускает Windows в защищённом режиме, воссоздаёт диспетчер виртуальных машин, затем запускается графический пользовательский интерфейс, и пользователь видит, что ОС перезагрузилась.
По словам Чена, в случае с win.com исходный код повторно использовал первые байты точки входа в качестве глобальной переменной, поскольку точка входа выполняется только один раз. При «быстрой перезагрузке» система не возвращается к точке входа, поэтому тот факт, что эти инструкции были повреждены, не имеет существенного значения.
Как отметил комментатор Отул Осан, быстрая перезагрузка работала не идеально: если попытаться выполнить две подряд, то вторая приводила к сбою. Чену не удалось воспроизвести баг, и он смог выполнить быструю перезагрузку четыре раза подряд без каких-либо проблем. Предположение инженера заключается в том, что какой-то драйвер устройства не перезагрузился должным образом, поэтому при перезагрузке системы второй его экземпляр не распознал устройство.
Ранее Чен рассказал, почему WinHelp в Windows 3.0 называли «онлайн-справкой», хотя она работала офлайн. По его словам, термин «онлайн» сперва означал «доступный на компьютере в данный момент».
Кроме того, разработчик поделился, что ещё в 90-е годы производители компьютеров добавили строки авторских прав в BIOS, чтобы предлагать клиентам полные версии пробного программного обеспечения в качестве бонуса.
Наконец, Чен раскрыл очередной секрет эпохи 16-битной Windows, связанный с названием ошибки hard error. Он отметил, что сообщения были сгенерированы внутри системы ввода-вывода, ниже уровня пользовательского интерфейса.
