Delen via


CorBindToRuntimeEx, functie

Hiermee kunnen niet-beheerde hosts de Common Language Runtime (CLR) in een proces laden. De functies CorBindToRuntime en CorBindToRuntimeEx voeren dezelfde bewerking uit, maar met de CorBindToRuntimeEx functie kunt u vlaggen instellen om het gedrag van de CLR op te geven.

Deze functie is afgeschaft in de .NET Framework 4.

Deze functie gebruikt een set parameters waarmee een host het volgende kan doen:

  • Geef de versie van de runtime op die wordt geladen.

  • Geef aan of de build van de server of het werkstation moet worden geladen.

  • Bepalen of gelijktijdige garbagecollection of niet-gelijktijdige garbagecollection is voltooid.

Notitie

Gelijktijdige garbagecollection wordt niet ondersteund in toepassingen met de WOW64 x86-emulator op 64-bits systemen die de Intel Itanium-architectuur (voorheen IA-64) implementeren. Zie 32-bits toepassingen uitvoeren voor meer informatie over het gebruik van WOW64 op 64-bits Windows-systemen.

  • Bepalen of assembly's als domeinneutraal worden geladen.

  • Verkrijg een interfaceaanwijzer naar een ICorRuntimeHost die kan worden gebruikt om extra opties in te stellen voor het configureren van een exemplaar van de CLR voordat deze wordt gestart.

Syntaxis

HRESULT CorBindToRuntimeEx (  
    [in]  LPCWSTR      pwszVersion,
    [in]  LPCWSTR      pwszBuildFlavor,
    [in]  DWORD        startupFlags,
    [in]  REFCLSID     rclsid,
    [in]  REFIID       riid,
    [out] LPVOID FAR  *ppv  
);  

Parameters

pwszVersion
[in] Een tekenreeks die de versie van de CLR beschrijft die u wilt laden.

Een versienummer in de .NET Framework bestaat uit vier delen, gescheiden door punten: major.minor.build.revision. De tekenreeks die wordt doorgegeven als pwszVersion moet beginnen met het teken 'v', gevolgd door de eerste drie delen van het versienummer (bijvoorbeeld 'v1.0.1529').

Sommige versies van de CLR worden geïnstalleerd met een beleidsinstructie die compatibiliteit met eerdere versies van de CLR specificeert. De opstart-shim evalueert standaard op basis van beleidsinstructies en laadt pwszVersion de nieuwste versie van de runtime die compatibel is met de versie die wordt aangevraagd. Een host kan de shim dwingen de beleidsevaluatie over te slaan en de exacte versie te laden die is opgegeven in pwszVersion door een waarde van STARTUP_LOADER_SAFEMODE door te geven voor de startupFlags parameter, zoals hieronder wordt beschreven.

Als de aanroeper null opgeeft voor pwszVersion, CorBindToRuntimeEx identificeert u de set geïnstalleerde runtimes waarvan de versienummers lager zijn dan de .NET Framework 4-runtime en laadt u de nieuwste versie van de runtime uit die set. De .NET Framework 4 of hoger wordt niet geladen en mislukt als er geen eerdere versie is geïnstalleerd. Houd er rekening mee dat het doorgeven van null de host geen controle geeft over welke versie van de runtime wordt geladen. Hoewel deze benadering in sommige scenario's geschikt kan zijn, wordt het sterk aanbevolen dat de host een specifieke versie levert om te laden.

pwszBuildFlavor
[in] Een tekenreeks die aangeeft of de server of de werkstationbuild van de CLR moet worden geladen. Geldige waarden zijn svr en wks. De serverbuild is geoptimaliseerd om te profiteren van meerdere processors voor garbagecollection en de build van het werkstation is geoptimaliseerd voor clienttoepassingen die worden uitgevoerd op een computer met één processor.

Als pwszBuildFlavor is ingesteld op null, wordt de build van het werkstation geladen. Bij uitvoering op een computer met één processor wordt de build van het werkstation altijd geladen, zelfs als pwszBuildFlavor is ingesteld op svr. Als pwszBuildFlavor echter is ingesteld op svr en gelijktijdige garbagecollection is opgegeven (zie de beschrijving van de startupFlags parameter), wordt de serverbuild geladen.

startupFlags
[in] Een combinatie van waarden van de STARTUP_FLAGS opsomming. Deze vlaggen bepalen gelijktijdige garbagecollection, domeinneutrale code en het gedrag van de pwszVersion parameter. De standaardwaarde is één domein als er geen vlag is ingesteld. De volgende waarden zijn geldig:

  • STARTUP_CONCURRENT_GC

  • STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN

  • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN

  • STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOST

  • STARTUP_LOADER_SAFEMODE

  • STARTUP_LOADER_SETPREFERENCE

  • STARTUP_SERVER_GC

  • STARTUP_HOARD_GC_VM

  • STARTUP_SINGLE_VERSION_HOSTING_INTERFACE

  • STARTUP_LEGACY_IMPERSONATION

  • STARTUP_DISABLE_COMMITTHREADSTACK

  • STARTUP_ALWAYSFLOW_IMPERSONATION

Zie de opsomming STARTUP_FLAGS voor beschrijvingen van deze vlaggen.

rclsid
[in] De CLSID van de coklasse die de ICorRuntimeHost - of de ICLRRuntimeHost-interface implementeert. Ondersteunde waarden zijn CLSID_CorRuntimeHost of CLSID_CLRRuntimeHost.

riid
[in] De IID van de aangevraagde interface van rclsid. Ondersteunde waarden zijn IID_ICorRuntimeHost of IID_ICLRRuntimeHost.

ppv
[uit] De geretourneerde interface-aanwijzer naar riid.

Opmerkingen

Als pwszVersion u een runtimeversie opgeeft die niet bestaat, CorBindToRuntimeEx retourneert een HRESULT-waarde van CLR_E_SHIM_RUNTIMELOAD.

Uitvoeringscontext en stroom van Windows-identiteit

In versie 1 van de CLR loopt het WindowsIdentity object niet over asynchrone punten, zoals nieuwe threads, threadgroepen of timer-callbacks. In versie 2.0 van de CLR verpakt een ExecutionContext object bepaalde informatie over de thread die momenteel wordt uitgevoerd en wordt deze over een willekeurig asynchroon punt gestroomd, maar niet over de grenzen van het toepassingsdomein. Op dezelfde manier loopt het WindowsIdentity object ook over elk asynchroon punt. Daarom loopt de huidige imitatie op de thread, indien van toepassing, ook door.

U kunt de stroom op twee manieren wijzigen:

  1. Door de ExecutionContext instellingen te wijzigen om de stroom per thread te onderdrukken (zie de SuppressFlowmethoden , SuppressFlowen SuppressFlowWindowsIdentity ).

  2. Door de standaardmodus van het proces te wijzigen in de compatibiliteitsmodus versie 1, waarbij het WindowsIdentity object niet over een asynchroon punt stroomt, ongeacht de ExecutionContext instellingen op de huidige thread. Hoe u de standaardmodus wijzigt, is afhankelijk van of u een beheerd uitvoerbaar bestand of een onbeheerde hostinginterface gebruikt om de CLR te laden:

    1. Voor beheerde uitvoerbare bestanden moet u het enabled kenmerk van het <element legacyImpersonationPolicy> instellen op true.

    2. Voor niet-beheerde hostinginterfaces stelt u de STARTUP_LEGACY_IMPERSONATION vlag in de startupFlags parameter in bij het aanroepen van de CorBindToRuntimeEx functie.

    De compatibiliteitsmodus versie 1 is van toepassing op het hele proces en op alle toepassingsdomeinen in het proces.

Vereisten

Platforms: Zie Systeemvereisten.

Header: MSCorEE.h

Bibliotheek: MSCorEE.dll

.NET Framework versies: beschikbaar sinds 1.0

Zie ook