64-bits toepassingen
Wanneer u een toepassing compileert, kunt u opgeven dat deze moet worden uitgevoerd op een Windows 64-bits besturingssysteem als een systeemeigen toepassing of onder WOW64 (Windows 32-bits op Windows 64-bits). WOW64 is een compatibiliteitsomgeving waarmee een 32-bits toepassing kan worden uitgevoerd op een 64-bits systeem. WOW64 is opgenomen in alle 64-bits versies van het Windows-besturingssysteem.
32-bits versus 64-bits toepassingen in Windows uitvoeren
32-bits toepassingen die zijn gebouwd op .NET Framework 4 of hoger, worden uitgevoerd onder WOW64 op 64-bits systemen.
Visual Studio installeert de 32-bits versie van de CLR op een x86-computer en zowel de 32-bits versie als de juiste 64-bits versie van de CLR op een 64-bits Windows-computer. (Omdat Visual Studio een 32-bits toepassing is, wanneer deze is geïnstalleerd op een 64-bits systeem, wordt deze uitgevoerd onder WOW64.)
Notitie
Vanwege het ontwerp van x86-emulatie en het WOW64-subsysteem voor de Itanium-processorfamilie zijn toepassingen beperkt tot uitvoering op één processor. Deze factoren verminderen de prestaties en schaalbaarheid van 32-bits .NET Framework-toepassingen die worden uitgevoerd op Itanium-systemen. U wordt aangeraden .NET Framework 4 te gebruiken, met systeemeigen 64-bits ondersteuning voor Itanium-systemen, voor betere prestaties en schaalbaarheid.
Wanneer u een 64-bits beheerde toepassing uitvoert op een 64-bits Windows-besturingssysteem, kunt u standaard een object van maximaal 2 gigabyte (GB) maken. In .NET Framework 4.5 kunt u deze limiet echter verhogen. Zie het <element gcAllowVeryLargeObjects> voor meer informatie.
Veel assembly's worden identiek uitgevoerd op zowel de 32-bits CLR als de 64-bits CLR. Sommige programma's gedragen zich echter mogelijk anders, afhankelijk van de CLR, als ze een of meer van de volgende items bevatten:
- Structuren die leden bevatten die de grootte wijzigen, afhankelijk van het platform (bijvoorbeeld elk type aanwijzer).
- Aanwijzerberekening die constante grootten bevat.
- Onjuiste platformaanroepen of COM-declaraties die worden gebruikt
Int32
voor ingangen in plaats vanIntPtr
. - Code die naar
IntPtr
Int32
.
Zie De 32-bits beheerde code migreren naar 64-bits beheerde code voor meer informatie over het overzetten van een 32-bits toepassing die moet worden uitgevoerd op de 64-bits CLR.
Algemene 64-bits programmeergegevens
Zie de volgende documenten voor algemene informatie over 64-bits programmering:
Zie de programmeerhandleiding voor 64-bits Windows in de Windows SDK-documentatie.
Zie Visual Studio IDE 64-bits ondersteuning voor meer informatie over visual studio-ondersteuning voor het maken van 64-bits toepassingen.
Compilerondersteuning voor het maken van 64-bits toepassingen
Wanneer u .NET Framework gebruikt om een toepassing te bouwen op een 32-bits of een 64-bits computer, wordt de toepassing standaard uitgevoerd op een 64-bits computer als een systeemeigen toepassing (dus niet onder WOW64). De volgende tabel bevat documenten waarin wordt uitgelegd hoe u Visual Studio-compilers gebruikt om 64-bits toepassingen te maken die worden uitgevoerd als systeemeigen, onder WOW64 of beide.
Compiler | Compileroptie |
---|---|
Visual Basic | -platform (Visual Basic) |
Visual C# | -platform (C#-compileropties) |
Visual C++ | U kunt platformagnostische, algemene tussentaaltoepassingen (CIL) maken met behulp van /clr:safe. Zie -clr (Common Language Runtime Compilation) voor meer informatie. Visual C++ bevat een afzonderlijke compiler voor elk 64-bits besturingssysteem. Zie 64-bits programmering voor meer informatie over het gebruik van Visual C++ om systeemeigen toepassingen te maken die worden uitgevoerd op een 64-bits Windows-besturingssysteem. |
De status van een .exe-bestand of .dll-bestand bepalen
Gebruik CorFlags.exe (CorFlags Conversion Tool) zonder opties om te bepalen of een .exe- of .dll-bestand alleen moet worden uitgevoerd op een specifiek platform of onder WOW64. U kunt ook CorFlags.exe gebruiken om de platformstatus van een .exe-bestand of .dll bestand te wijzigen. De CLR-header van een Visual Studio-assembly heeft het primaire runtimeversienummer ingesteld op 2 en het secundaire runtimeversienummer ingesteld op 5. Toepassingen waarop de secundaire runtimeversie is ingesteld op 0, worden behandeld als verouderde toepassingen en worden altijd uitgevoerd onder WOW64.
Als u programmatisch een query wilt uitvoeren op een .exe of .dll om te zien of deze alleen moet worden uitgevoerd op een specifiek platform of onder WOW64, gebruikt u de Module.GetPEKind methode.