Win32s - Win32s

Win32s - это 32-разрядная среда выполнения приложений для операционных систем Microsoft Windows 3.1 и 3.11 . Это позволяло некоторым 32-битным приложениям работать в 16-битной операционной системе с использованием преобразователей вызовов . Бета-версия Win32s была доступна в октябре 1992 года. Версия 1.10 была выпущена в июле 1993 года одновременно с Windows NT 3.1 .

Понятие и характеристики

Win32s был задуман как частичная реализация Win32 Windows API, существовавшего в ранних версиях Windows NT .

Буква «s» в Win32s означает подмножество , поскольку в Win32s отсутствовал ряд функций Windows NT, включая многопоточность , асинхронный ввод-вывод , новые функции последовательного порта и многие расширения GDI . Обычно это ограничивалось «приложениями Win32s», которые были специально разработаны для платформы Win32s, хотя некоторые стандартные программы Win32 работали бы правильно, включая Microsoft 3D Pinball Space Cadet и некоторые из включенных в Windows 95 апплетов. Ранние версии Internet Explorer (до версии 5) также были совместимы с Win32s, хотя они также существовали в 16-битном формате. Как правило, для совместимости 32-разрядного приложения с Win32s ему не нужно использовать более 16 МБ памяти или какие-либо расширенные функции, такие как DirectX .

Win32s наследует многие ограничения среды Win16. Настоящие приложения Win32 выполняются в частном виртуальном адресном пространстве, тогда как Windows 3.x использовала адресное пространство, совместно используемое всеми запущенными приложениями. Приложение, работающее на Win32s, имеет общее адресное пространство и характеристики совместной многозадачности Windows 3.1. Следовательно, чтобы приложение Win32 работало на Win32, оно должно содержать информацию о перемещении .

Техника, называемая thunking, является фундаментальной для реализации Win32, а также операционных систем с ядром Чикаго, которыми являются Windows 95 , Windows 98 и Windows ME . Однако разрешение преобразования на уровне пользователя значительно усложняет попытки обеспечить стабильное управление памятью или защиту памяти на общесистемной основе, а также безопасность ядра или ядра - это позволяет плохо написанным приложениям подрывать стабильность системы на Win32, а также в Чикаго. -ядерные системы. 32-разрядные версии Windows NT прозрачно предоставляют виртуальную машину для запуска приложений Win16, хотя эта функция была удалена из 64-разрядных версий Windows.

Совместимость

Приложения, совместимые с Win32s, могут быть созданы с использованием средств разработки Microsoft, а также, по крайней мере, Borland C ++ 4.x и Symantec C ++ (теперь Digital Mars C ++). Однако некоторые параметры компиляции программы (например, информация о перемещении EXE) и библиотеки DLL, которые неявно присутствовали в Windows NT 3.1, должны быть включены в приложение в Win32s. Microsoft прекратила поддержку Win32 в Visual C ++ версии 4.2, выпущенной в конце 1996 года.

Win32s включала реализацию карточной игры FreeCell в качестве примера приложения за пару лет до того, как игра стала известной благодаря включению в Windows 95 .

Warcraft II: Tides of Darkness , игра для DOS, включала редактор уровней, для работы которого требовался Win32s. Редактор использовал графический интерфейс Windows для отображения больших карт, поскольку графические режимы с высоким разрешением уже обрабатывались Windows. Для веб-браузера NCSA Mosaic версии 2 также требовались Win32s.

Приложения C # могут быть скомпилированы компилятором CoreRT в код Win32, который поддерживается компоновщиком Visual C ++ 1994 года. Эта комбинация создает исполняемые файлы Win32, которые могут работать в Windows 3.1 с Win32s.

Исходники и установка

Win32s по-прежнему можно найти с помощью поисковых систем; Обычно в качестве установочного файла используется PW1118.EXE.

$ sha256sum pw1118.exe
5e7162ba950856104b4c6cb39d2fa5c55e73f86b1d65c31341913dba8b6ba455  pw1118.exe

Разработчики должны убедиться, что они устанавливают OLE, если им требуется последовательная обработка буфера обмена. Многие приложения, которые должны быть осведомлены о OLE (т. Е. Настраивать их сервер OLE), должны быть переустановлены. Win32s также был включен в некоторые ранние программы Win32.

Рекомендации

Внешние ссылки