Рэймонд Чен объяснил работу старого трюка в Windows 95 по перезапуску ПК через зажатие Shift
Инженер 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 в защищённом
Читать на habr.com