Dela via


Översikt över kompatibilitetsöverväganden för 32-bitarsprogram på 64-bitarsversioner av Windows

I den här artikeln beskrivs kompatibilitetsöverväganden och begränsningar för 32-bitarsprogram som körs på 64-bitarsversioner av Windows.

Ursprungligt KB-nummer: 896456

Sammanfattning

64-bitarsversionerna av Windows använder undersystemet Microsoft Windows-32-on-Windows-64 (WOW64) för att köra 32-bitarsprogram utan ändringar. 64-bitarsversionerna av Windows har inte stöd för 16-bitars binärfiler eller 32-bitarsdrivrutiner. Program som är beroende av 16-bitars binärfiler eller 32-bitars drivrutiner kan inte köras på 64-bitarsversionerna av Windows om inte programtillverkaren tillhandahåller en uppdatering för programmet.

Det kan finnas överväganden som påverkar ett programs kompatibilitet eller prestanda. Du kan avgöra om ett program har kompatibilitets- eller prestandaproblem genom att testa programmet på någon av 64-bitarsversionerna av Windows.

Den här artikeln beskriver några av kompatibilitetsövervägandena för att köra 32-bitarsprogram på 64-bitarsversionerna av Windows. Den här artikeln jämför inte 32-bitars- och 64-bitarsversionerna av Windows eller olika 64-bitars operativsystem. Den här artikeln förutsätter att du förstår skillnaden mellan 32-bitars binärfiler och 64-bitars binärfiler.

Introduktion

De x64-baserade versionerna av Microsoft Windows är optimerade för att köra interna 64-bitarsprogram. Dessutom använder de x64-baserade versionerna av Windows undersystemet WOW64 för att köra 32-bitarsprogram.

Köra 32-bitarsprogram

Undersystemet WOW64 gör det möjligt för 32-bitarsprogram att köras utan ändringar i de x64-baserade versionerna av Windows. WOW64-undersystemet gör detta genom att skapa en 32-bitars miljö på de x64-baserade versionerna av Windows. Mer information om undersystemet WOW64 finns i avsnittet "Köra 32-bitarsprogram" i avsnittet 64-bitars Windows i Microsoft Platform SDK-dokumentationen. Om du vill visa det här dokumentet går du till följande Microsoft-webbplats: Köra 32-bitarsprogram.

Överväganden för programprestanda

Undersystemet WOW64 skapar en 32-bitars miljö på de x64-baserade versionerna av Windows. Vissa 32-bitarsprogram kan köras långsammare på dessa operativsystem än på 32-bitarsversioner av Windows. Alternativt kan vissa 32-bitarsprogram som kräver många minnen uppvisa ökad prestanda på de x64-baserade versionerna av Windows. Den här prestandaökningen beror på att de x64-baserade versionerna av Windows stöder mer fysiskt minne än 32-bitarsversionerna av Windows.

Mer information om skillnaderna i minneshantering mellan 64- och 32-bitarsversionerna av Windows finns i avsnittet "Virtuellt adressutrymme" i avsnittet Om minneshantering i Microsoft Platform SDK-dokumentationen. Om du vill visa det här dokumentet går du till följande Microsoft-webbplats: Virtuellt adressutrymme

Begränsningar för WOW64-undersystemet

UNDERsystemet WOW64 stöder inte följande program:

  • Program som kompileras för 16-bitars operativsystem
  • Kernel-läge-program som kompileras för 32-bitars operativsystem

16-bitarsprogram

De x64-baserade versionerna av Windows stöder inte 16-bitarsprogram eller 16-bitars programkomponenter. Den programvaruemulering som krävs för att köra 16-bitarsprogram på den x64-baserade versionen av Windows skulle avsevärt minska prestandan för dessa program.

Ett 16-bitars installationsprogram används ofta för att installera och konfigurera ett 32-bitarsprogram. Dessutom kräver vissa 32-bitarsprogram att 16-bitarskomponenter körs korrekt. Även om 32-bitarsprogram som kräver 16-bitarskomponenter kan köras korrekt när de har installerats kan du inte använda 16-bitarsinstallationsprogrammet för att installera ett 32-bitarsprogram. Program som kräver 16-bitarskomponenter kan inte köras på x64-baserade versioner av Windows.

Om ett 32-bitarsprogram som kräver 16-bitarskomponenter försöker köra en 16-bitars fil eller komponent loggar 32-bitarsprogrammet ett felmeddelande i systemloggen. Operativsystemet låter sedan 32-bitarsprogrammet hantera felet.

För att avgöra om ett program kräver en 16-bitars komponent installerar och kör du programmet. Om programmet genererar ett felmeddelande kontaktar du programmets tillverkare för en uppdatering som är kompatibel med de x64-baserade versionerna av Windows.

32-bitars drivrutiner

De x64-baserade versionerna av Windows stöder inte 32-bitarsdrivrutiner. Alla drivrutiner för maskinvaruenheter och programdrivrutiner måste kompileras specifikt för den x64-baserade versionen av Windows.

Om ett 32-bitarsprogram försöker installera en 32-bitars drivrutin på en dator som kör en x64-baserad version av Windows misslyckas installationen av drivrutinen. När det här beteendet inträffar rapporterar den x64-baserade versionen av Windows ett fel till 32-bitarsprogrammet.

Om ett 32-bitarsprogram försöker registrera en 32-bitars drivrutin för automatisk start på en dator som kör en x64-baserad version av Windows, identifierar bootstrap-inläsaren på datorn att 32-bitarsdrivrutinen inte stöds. Den x64-baserade versionen av Windows startar inte 32-bitarsdrivrutinen, men startar de andra registrerade drivrutinerna.

För att avgöra om ett program kräver en 32-bitars drivrutin installerar och kör du programmet. Om programmet genererar ett felmeddelande kontaktar du programmets tillverkare för en uppdatering som är kompatibel med de x64-baserade versionerna av Windows.

Ytterligare överväganden

Register- och filomdirigering

UNDERsystemet WOW64 isolerar 32-bitars binärfiler från 64-bitars binärfiler genom att omdirigera registeranrop och vissa filsystemanrop. WOW64-undersystemet isolerar binärfilerna för att förhindra att en 32-bitars binärfil oavsiktligt kommer åt data från en 64-bitars binärfil. Till exempel kan en 32-bitars binärfil som kör en .dll fil från mappen %systemroot%\System32 av misstag försöka komma åt en 64-bitars .dll fil som inte är kompatibel med 32-bitars binärfilen. För att förhindra detta omdirigerar undersystemet WOW64 åtkomsten från mappen %systemroot%\System32 till mappen %systemroot%\SysWOW64. Den här omdirigeringen förhindrar kompatibilitetsfel eftersom den kräver att .dll-filen är särskilt utformad för att fungera med 32-bitarsprogram.

Mer information om omdirigering av filsystem och register finns i avsnittet "Köra 32-bitarsprogram" i avsnittet 64-bitars Windows i Microsoft Platform SDK-dokumentationen. Om du vill visa det här dokumentet går du till följande Microsoft-webbplats: Köra 32-bitarsprogram
UNDERsystemet WOW64 omdirigerar 32-bitars binära anrop utan att kräva ändringar i 32-bitars binärfilerna. Du kan dock se bevis för den här omdirigeringen när du utför vissa uppgifter. Om du till exempel skriver ett kommandoradsskript i en 64-bitars kommandotolk kanske kommandotolken inte kan komma åt 32-bitarsprogram i mappen Programfiler. UNDERsystemet WOW64 omdirigerar och installerar 32-bitarsprogram i mappen ProgramFiler (x86). För att få åtkomst till rätt mapp måste du ändra kommandoradsskriptet. Du måste också skriva kommandoradsskriptet i en 32-bitars kommandotolk. 32-bitars kommandotolken omdirigerar automatiskt filsystemanrop till rätt 32-bitarskatalog.

Starta en 32-bitars kommandotolk genom att följa dessa steg:

  • Klicka på Start, klicka på Kör, skriv %windir%\SysWoW64\cmd.exe och klicka sedan på OK.

Versionskontroll

Vissa 32-bitarsprogram undersöker versionsinformationen för operativsystemet. Många 32-bitarsprogram som utför den här kontrollen känner inte igen de x64-baserade versionerna av Windows som kompatibla operativsystem. När det här beteendet inträffar genererar 32-bitarsprogrammet ett versionskontrollfel och stängs sedan. Om det här beteendet inträffar kontaktar du tillverkaren av 32-bitarsprogrammet för en uppdatering som är kompatibel med de x64-baserade versionerna av Windows.

The Microsoft .NET Framework

Ett program som kompileras med Microsoft .NET Framework körs som ett 32-bitarsprogram i undersystemet WOW64 om följande villkor är uppfyllda:

  • I programmet har ILONLY-biten angetts i rubrikinformationen.
  • Programmet kompilerades med Microsoft .NET Framework 1.1. Om ILONLY-biten inte har angetts i rubrikinformationen, eller om programmet kompilerades med Microsoft .NET Framework version 2.0, körs programmet som ett internt 64-bitarsprogram.

OpenGL

De x64-baserade versionerna av Windows innehåller inte någon OpenGL-grafikdrivrutin. Kontakta enhetens tillverkare om du vill ha en drivrutin som är kompatibel med de x64-baserade versionerna av Windows.

Microsoft Management Console (MMC)

De x64-baserade versionerna av Windows använder 64-bitarsversionen av Microsoft Management Console (MMC) för att köra olika snapin-moduler. Du kan dock ibland kräva att 32-bitarsversionen av MMC kör snapin-moduler i WOW64-undersystemet. Mer information om hur MMC fungerar i x64-baserade versioner av Windows finns i avsnittet "Köra 32-bitars och 64-bitars snapin-moduler i 64-bitars Windows" i avsnittet Använda MMC 2.0 i Microsoft Platform SDK-dokumentationen. Om du vill visa det här dokumentet går du till följande Microsoft-webbplats: Köra 32-bitars och 64-bitars snapin-moduler i 64-bitars Windows

x64 Överväganden

De x64-baserade versionerna av Windows stöder 32-bitars instruktioner och 64-bitars instruktioner. WOW64-undersystemet kan köra 32-bitarsprogram i inbyggt 64-bitarsläge genom att växla processorns inbyggda läge. Separata maskinvaru- eller programvarulager krävs inte. Du kanske inte får sämre prestanda när du kör ett 32-bitarsprogram på de x64-baserade versionerna av Windows.

Om du vill ha mer information om prestanda för en x64-baserad processor kontaktar du processortillverkaren eller besöker tillverkarens webbplats. Informationen och lösningen i detta dokument representerar Microsoft Corporations aktuella syn på dessa frågor vid publiceringsdatumet. Den här lösningen är tillgänglig via Microsoft eller via en tredjepartsleverantör. Microsoft rekommenderar inte specifikt någon tredjepartsleverantör eller tredjepartslösning som den här artikeln kan beskriva. Det kan också finnas andra tredjepartsleverantörer eller lösningar från tredje part som inte beskrivs i den här artikeln. Eftersom Microsoft måste svara på föränderliga marknadsvillkor bör den här informationen inte tolkas som ett åtagande från Microsoft. Microsoft kan inte garantera eller godkänna riktigheten av någon information eller någon lösning som presenteras av Microsoft eller av någon angiven tredjepartsleverantör.

Microsoft lämnar inga garantier och exkluderar alla utfästelser, garantier och villkor oavsett om de är uttryckliga, underförstådda eller lagstadgade. Dessa omfattar men är inte begränsade till representationer, garantier eller villkor för äganderätt, icke-intrång, tillfredsställande villkor, säljbarhet och lämplighet för ett visst ändamål, med avseende på någon tjänst, lösning, produkt eller annat material eller annan information. Microsoft ansvarar under inga omständigheter för någon lösning från tredje part som nämns i den här artikeln.

Referenser

Mer information om AMD64-processorn finns på följande webbplats för Avancerade mikroenheter: AMD-webbplats
Kontaktinformationen för andra företag i denna artikel kan hjälpa dig att hitta den tekniska support du behöver. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformationen är korrekt.

Mer information om hur du utvecklar program för Itanium-baserade versioner av Windows Server 2003 och Windows XP finns på följande Microsoft-webbplats: Introduktion till att utveckla program för den 64-bitars Itanium-baserade versionen av Windows

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.