Delen via


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 van IntPtr.
  • Code die naar IntPtrInt32.

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:

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.