Windows på Windows
Windows on Windows (ofta förkortat WOW) är ett kompatibilitetslager i x86-versioner av Microsoft Windows NT-familjen av operativsystem som gör det möjligt att köra många äldre 16-bitars program som är gjorda för Windows 3.x eller tidigare.
Bakgrund
WOW gör att många 16-bitars Windows-program kan köras utan ändringar i nyare 32-bitarsversioner av Windows. Detta gjordes för att ge programvaruutvecklare tid att göra sina program 32-bitarsprogram medan folk gick från Windows 3.1x till Windows 95, så att operativsystemet kan uppgraderas till en nyare version samtidigt som de flesta, eller alla, 16-bitarsprogrammen hos en kund kan köras.
Operativsystemen Windows 9x, som byggde på DOS, hade både 16- och 32-bitarssystem, så om operativsystemet behöll 16-bitsdelarna kunde det köra 16-bitarsprogram utan emulering. NT-baserade versioner är mycket annorlunda i hur de körs, så de behöver en mer sofistikerad lösning. Det finns två huvudsakliga tekniker för att låta 16-bitars program köras på 32-bitarsversioner av Windows (med vissa begränsningar) som kallas thunking och shimming.
Thunking
WOW "thunkar" 16-bitars instruktioner till 32-bitars motsvarigheter för att tillåta 16-bitars pekare, minnesutrymmen och adressutrymmen.
16-bitarsprogram körs vanligtvis i en enda virtuell DOS-maskin och delar minnet mellan dem. De kan dock ändras så att de körs i ett privat, separat minnesutrymme, där varje 16-bitarsprocess har en separat process. Detta kan minska antalet systemkrascher genom att program inte får störa andra, men det kan leda till minskad kommunikation mellan 16-bitars-processer och kan använda mer av datorns minne.
WOW är en del av 32-bitarsutgåvorna av Windows NT. 64-bitarsversioner av Windows (inklusive Windows Server 2008 R2 och senare där de endast har 64-bitarsversioner) kan inte köra 16-bitars programvara utan att använda olika emuleringsprogram (till exempel DOSBox).
WOWEXEC.EXE på Windows NT gör det möjligt för WoW att fungera. Windows-on-Windows kan med hjälp av filen WIN.COM emulera Windows 3.x (för NTVDM), Windows 95 och Windows 98-kärnorna, som kan köra 16-bitars DOS-drivna Windows-program på Windows NT.
Skimning
Problem med program som körs på nyare operativsystem, särskilt med långa filnamn, flera användarkonton och minsta möjliga privilegier, kan göra att vissa program inte fungerar korrekt. De kan till exempel felaktigt tro att de kan skriva filer till alla delar av filsystemet, men NTFS-filbehörigheter finns och tillåter inte detta i många systemmappar. När Microsoft byggde Windows 95 var de tvungna att se till att gamla program fortfarande fungerade med 8.3-filnamn för att gamla program skulle kunna fortsätta att fungera korrekt. Sedan Windows 95 finns det en funktion där både ett långt och ett kort filnamn behålls, så att äldre program fortfarande kan använda 8.3-filnamn.
Program som försöker komma åt maskinvaran direkt kan inte göra det. Gamla program kanske inte heller fungerar om de förväntar sig vissa systemkonfigurationsfiler från DOS och Windows 9x som inte används i Windows NT-operativsystemen, så tomma versioner av filer som AUTOEXEC.BAT och CONFIG.SYS finns trots att Windows NT inte använder dem.
Det finns många shims i programkompatibilitetslagret i senare versioner av Windows för att fånga upp och ändra API-anrop från gamla program som skapats med andra antaganden om operativsystemet i åtanke.