Библиотека подпрограмм Win32s, позволяющая использовать в среде Windows 3.х возможности 32-разрядной архитектуры процессора i386 и выше, появилась в 1994 г. Первоначально Win32s придавались некие стратегические цели плавного перехода к 32-разрядным технологиям, так как написанные под нее приложения могли впоследствии работать в будущей ОС для настольного компьютера, известной нам сейчас под названием Windows 95.
Действительно, было написано достаточно много весьма удачных приложений под Win32s. В операционной системе OS/2 Warp 3.0, в полном варианте появившейся на рынке в начале 1995 г., была предусмотрена поддержка приложений Win32s. Однако реально пользователям OS/2 Warp 3.0 оказалась недоступной значительная часть написанного под Win32s обеспечения. К сожалению, в литературе по OS/2, по крайней мере, в книгах, переведенных на русский язык, почти ничего не написано об этой проблеме.
Причиной невозможности работы программ для Win32s при общей хорошей совместимости OS/2 с программами для Windows 3.x является постоянное совершенствование Win32s. События на рынке ПО с момента ее создания развивались не так, как это предполагалось в 1994 г. Выход Windows 95 в течение нескольких месяцев откладывался, затем темпы ее внедрения оказались недостаточно быстрыми.
Поэтому Win32s не только не ушла в прошлое, но и продолжала совершенствоваться, а для повышения эффективности работы ПО для нее создавалось на основе самой новой версии на момент разработки. В OS/2 Warp 3.0 была реализована поддержка Win32s на уровне версии 1.10, а на момент написания этой статьи была уже известна версия 1.30. Причем основная масса ПО для Win32s была написана для версий старше 1.10, что не позволяет запускать его под OS/2. Например, не работает под управлением OS/2 пакет Mathcad 6.0 plus.
Почему же возникли проблемы с обновлением в OS/2 поддержки Win32s? В основе Win32s лежит так называемый VxD-драйвер W32S.386, осуществляющий прямой доступ к некоторым устройствам. В OS/2 для приложений Windows такой доступ принципиально не допускается, поэтому вместо Windows-драйвера W32S.386 используется собственный драйвер OS/2 W32S.SYS. Обновление версии Win32s требует разработки драйвера W32S.SYS, по своим функциям полностью идентичного соответствующему Windows-драйверу, что является совсем не простой задачей. Для пользователей же Windows проблем с обновлением Win32s обычно не возникает. Библиотека Win32s достаточно компактна, и ее можно распространять вместе с ПО, для работы которого она нужна.
В OS/2 Warp 4.0 уже имеется встроенная поддержка Win32s на уровне версии 1.25, что расширяет круг приложений Win32s, поддерживаемых OS/2.
Через Internet можно получить файлы, обеспечивающие в OS/2 Warp 3.0 поддержку Win32s на уровне версии 1.20 (обратитесь для этого по адресу: www.smallwaters.com/amos/win32s/vw32s.html; правда, автор статьи не тестировал сам и не знает результатов тестирования этой библиотеки).
Доминирующее положение Windows, с которым, похоже, стали понемногу свыкаться даже многие противники этой платформы, привело к тому, что все чаще под совместимостью различных платформ стали понимать совместимость различных вариантов Windows. В такой ситуации Win32s можно рассматривать под иным углом зрения. Написание программ под Win32s позволяет сделать их доступными широкому кругу пользователей Windows. Эти программы могут работать как под Windows 3.1, так и под Windows 95 или Windows NT, достаточно полно используя возможности каждой системы. Программы под Win32s продолжают создаваться, свежий пример - отечественная система автоматизации документооборота “Евфрат’97”, написанная под Win32s версии 1.30. Новых версий Win32s для OS/2 после 1.25 не было, что ставит разработчиков ПО перед выбором: эффективность работы или возможность использования на различных платформах. К сожалению, для пользователей OS/2 выбор делается в пользу эффективности.
С автором статьи можно связаться по Е-mail: vasiliev@dataforce.net.
Алексей Васильев