# Win32s

Win32s est une extension de Windows 3.x nécessitant une machine IA-32 contenant la prise en charge d'un jeu très réduit d'instructions Win32 (« s » veut dire « subset »).
Win32s a été supporté par les compilateurs de Microsoft jusqu'à 1997, où la nouvelle configuration des compilateurs construisaient des exécutables où l'adresse de chargement n'est pas disponible et où la section .reloc est manquante (voir (en) relocation). Ce n'est en aucun cas un problème sur les vrais Win32 (Windows 9x/NT/XP et autres) car l'adressage virtuel fait croire au programme que toute la mémoire d'un segment est disponible.
La distribution standard était fournie avec un jeu nommé Freecell dont la version 32 bits (fournie par ailleurs avec Windows 9x/NT) permettait le test du bon fonctionnement des appels système Win32. La mise en œuvre de Win32 a été beaucoup plus complète sous Windows 95 qui était presque totalement compatible avec Windows NT 3.x.

## Concept et caractéristiques

Win32s était conçu comme une implémentation partielle de l'API Windows Win32 telle qu'elle existait dans les premières versions de Windows NT.
Le "s" dans Win32s signifie subset (un sous - ensemble), car il manquait à Win32 un certain nombre de fonctions Windows NT, notamment le multi-threading, les E/S asynchrones, les nouvelles fonctions de port série et de nombreuses extensions GDI. Cela se limitait généralement aux applications Win32s spécialement conçues pour la plate-forme Win32s, bien que certains programmes Win32 standard puissent fonctionner correctement, notamment le 3D Pinball Space Cadet de Microsoft, les applets inclus dans Windows 95 et Office 95, les versions d'Internet Explorer (jusqu'à la version 5) étaient également compatibles Win32, bien qu'elles existaient également au format 16 bits. En règle générale, pour qu'une application 32 bits soit compatible avec Win32s, elle ne devait pas utiliser plus de 16 Mo de mémoire ou des fonctionnalités étendues telles que DirectX.
Win32s hérite de nombreuses limitations de l'environnement Win16. Les applications True Win32 s'exécutent dans un espace d'adressage virtuel privé, alors que Windows 3.x utilisait un espace d'adressage partagé entre toutes les applications en cours d'exécution. Une application s'exécutant sur Win32s possède l'espace d'adressage partagé et les caractéristiques coopératives multitâches de Windows 3.1. Par conséquent, pour qu'une application Win32 s'exécute sur Win32s, elle doit contenir des informations de déplacement.
Une technique appelée thunking est fondamentale pour la mise en œuvre de Win32s ainsi que des systèmes d'exploitation du noyau de Chicago, à savoir Windows 95, Windows 98 et Windows ME. Cependant, autoriser l’intervention au niveau de l’utilisateur complique considérablement les tentatives de gestion de la mémoire stable ou de protection de la mémoire sur l’ensemble du système, ainsi que la sécurité du cœur ou du noyau. Cela permet à des applications mal écrites de compromettre la stabilité du système sur Win32s, ainsi systèmes à noyau. La stabilité et la sécurité que Windows NT peut offrir sont partiellement basées sur l’illégalité du comportement, à l’exception des scénarios de Win16 à Win32 - le processeur doit rester en mode protégé à tout moment. Windows XP et les versions 32 bits ultérieures de Windows fournissent de manière transparente une machine virtuelle pour l'exécution d'applications Win16, bien que cette fonctionnalité ait été supprimée des versions 64 bits de Windows.
Les applications compatibles Win32s pouvaient être créées à l'aide des outils de développement de Microsoft, ainsi qu'au moins Borland C++ 4.x. Toutefois, plusieurs options de compilation de programmes et DLL implicites dans Windows NT 3.1 doivent être incluses avec l'application dans Win32s. Microsoft a cessé de prendre en charge Win32s dans Visual C++ version 4.2 publiée à la fin de 1996.
Warcraft II: Tides of Darkness, un jeu pour DOS, incluait un éditeur de niveaux qui nécessitait l'exécution de Win32. L'éditeur utilisait une interface graphique Windows pour afficher les grandes cartes car les modes graphiques haute résolution étaient déjà gérés par Windows. La version 2 du navigateur Web NCSA Mosaic nécessitait également Win32s.

## Sources et installation

Win32s peut toujours être trouvé en utilisant des moteurs de recherche Web; PW1118.EXE est généralement le fichier d'installation utilisé.