Fram till-och-med windows Me så var det byggt ovanpå ms-dos - det behöver fortfarande dos för att fungera.
Det finns förvisso många artiklar på internet som hävdar motsatsen, men till att börja med är inte win9x pure 32-bit (det fanns lite special-versioner hit o dit men oftast var det 16+32 bit), och du behövde ingen dos-emulator för att köra dos grejer, det var snarare en VM manager som såg till att vissa av anropen ner till dos inte krockade när flera dos-program exekverade samtidigt, samt massa tricks för att hantera delat minne mellan olika dos instanser.
"32-bit" windows så som t.ex Win95 bootar genom att först ladda gamla 16-bitars windows i dos, precis som på Win3.1 tiden, för att sedan som nästa steg ladda alla 32-bitars kernel drivers som ett lager ovanpå det, och slutligen laddar den sitt shell, som är explorer.exe.
I praktiken utförs många av anropen till "32"-bitars operativsystemet genom att prata / översätta mot 16-bitars lagret under, särskilt i USER och GDI system komponenterna, men eftersom det är dos-baserat och dos inte stödde preemptive multitasking så tas även en semaphore mutex kallad "Win16Mutex" för att se till att det aldrig kan göras mer än ett anrop i taget ner till 16-bitars lagret, eftersom det skulle kunna korrumpera systemet.
Sista länken är en arkiverad officiell Microsoft Knowledge Base artikel för hur man bäst tar hänsyn till Win16Mutex när man skriver kod för Win95, och för att citera några go'a bitar från Microsoft själva:
Jag uttryckte mig felaktigt/otydligt, vad jag menade var att systemkravet för windows 3.1 innehåller MS-DOS, det gör inte Windows 95.