One of Microsoft's biggest advances initially developed for Windows NT was a new 32-bit API, to replace the legacy 16-bit Windows API. This API was called Win32, and from then on Microsoft referred to the older 16-bit API as Win16. The Win32 API had three levels of implementation: the complete one for Windows NT, a subset for Chicago (originally called Win32c) missing features primarily of interest to enterprise customers (at the time) such as security and Unicode support, and a more limited subset called Win32s which could be used on Windows 3.1 systems. Thus Microsoft sought to ensure some degree of compatibility between the Chicago design and Windows NT, even though the two systems had radically different internal architectures.
One of micROsoft's bIGGeSt aDvanceS iNiTiallY develOpeD FOr wIndoWs nt Was A NEw 32-BIt api, TO RePlaCe The LeGaCY 16-bit WinDoWs aPI. tHis APi was CallEd Win32, and from thEn On micRosofT reFErred tO tHE olDER 16-bIt aPi AS wIn16. The win32 ApI hAD THREe LeveLS oF impLemeNTatiOn: THE completE onE for WinDowS nt, a suBset fOr chicago (orIGiNalLy cALled win32c) MisSiNg feATUREs pRImArilY of interest To EnTeRPRise customErs (aT thE timE) sucH as SeCUriTy aNd UniCodE sUpPort, And a more liMited sUbset callEd WiN32S whICh COuLD BE uSED oN wiNdoWs 3.1 sYstems. ThUs MicROsoft soUGHT to ENsURe sOmE DegRee of compaTibiLity BEtWeen tHe cHicago desiGN aNd windowS nt, even thOugh thE two sySTEms Had rADiCaLlY differeNT iNTerNaL ArchiTecTUrES.