CorBindToRuntimeEx – funkce

Umožňuje nespravovaným hostitelům načíst modul CLR (Common Language Runtime) do procesu. CorBindToRuntime a CorBindToRuntimeEx funkce provádějí stejnou operaci, ale CorBindToRuntimeEx funkce vám umožní nastavit příznaky pro určení chování CLR.

Tato funkce je v rozhraní .NET Framework 4 zastaralá.

Tato funkce přebírá sadu parametrů, které hostiteli umožňují provádět následující akce:

  • Zadejte verzi modulu runtime, který se načte.

  • Určete, jestli se má načíst sestavení serveru nebo pracovní stanice.

  • Určuje, jestli se má provést souběžné uvolňování paměti nebo nesouběrné uvolňování paměti.

Poznámka

Souběžné uvolňování paměti není podporováno v aplikacích s emulátorem WOW64 x86 v 64bitových systémech, které implementují architekturu Intel Itanium (dříve označované jako IA-64). Další informace o používání wow64 v 64bitových systémech Windows najdete v tématu Spouštění 32bitových aplikací.

  • Určuje, jestli se sestavení načítají jako neutrální z domény.

  • Získejte ukazatel rozhraní na ICorRuntimeHost , který lze použít k nastavení dalších možností pro konfiguraci instance CLR před jeho spuštěním.

Syntaxe

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

Parametry

pwszVersion
[v] Řetězec popisující verzi modulu CLR, který chcete načíst.

Číslo verze v rozhraní .NET Framework se skládá ze čtyř částí oddělených tečkami: major.minor.build.revision. Řetězec předaný jako pwszVersion musí začínat znakem "v", za kterým následují první tři části čísla verze (například "v1.0.1529").

Některé verze modulu CLR se instalují s příkazem zásad, který určuje kompatibilitu s předchozími verzemi modulu CLR. Ve výchozím nastavení se spouštěcí shim vyhodnotí pwszVersion podle příkazů zásad a načte nejnovější verzi modulu runtime, která je kompatibilní s požadovanou verzí. Hostitel může vynutit vynechání vyhodnocení zásad a načtení přesné verze zadané v pwszVersion parametru předáním hodnoty parametru STARTUP_LOADER_SAFEMODEstartupFlags , jak je popsáno níže.

Pokud volající zadá hodnotu null pro pwszVersion, CorBindToRuntimeEx identifikuje sadu nainstalovaných modulů runtime, jejichž čísla verzí jsou nižší než modul runtime rozhraní .NET Framework 4, a načte nejnovější verzi modulu runtime z této sady. Nenačte rozhraní .NET Framework 4 nebo novější a pokud není nainstalovaná žádná starší verze, selže. Všimněte si, že předání hodnoty null nedává hostiteli žádnou kontrolu nad tím, která verze modulu runtime je načtena. I když tento přístup může být v některých scénářích vhodný, důrazně doporučujeme, aby hostitel dodal konkrétní verzi pro načtení.

pwszBuildFlavor
[v] Řetězec, který určuje, zda se má načíst server nebo sestavení pracovní stanice CLR. Platné hodnoty jsou svr a wks. Sestavení serveru je optimalizované tak, aby využívalo více procesorů pro uvolňování paměti, a sestavení pracovní stanice je optimalizované pro klientské aplikace spuštěné na počítači s jedním procesorem.

Pokud pwszBuildFlavor je nastavená hodnota null, sestavení pracovní stanice se načte. Při spuštění na počítači s jedním procesorem se sestavení pracovní stanice vždy načte, i když pwszBuildFlavor je nastaveno na svrhodnotu . Pokud pwszBuildFlavor je však nastavena na svr a je zadáno souběžné uvolňování paměti (viz popis parametru startupFlags ), sestavení serveru se načte.

startupFlags
[v] Kombinace hodnot STARTUP_FLAGS výčtu. Tyto příznaky řídí souběžné uvolňování paměti, kód neutrální z domény a chování parametru pwszVersion . Výchozí hodnota je jedna doména, pokud není nastavený žádný příznak. Následující hodnoty jsou platné:

  • 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

Popisy těchto příznaků najdete ve výčtu STARTUP_FLAGS .

rclsid
[v] The CLSID coclass, který implementuje buď ICorRuntimeHost nebo ICLRRuntimeHost rozhraní. Podporované hodnoty jsou CLSID_CorRuntimeHost nebo CLSID_CLRRuntimeHost.

riid
[v] Požadované IID rozhraní z rclsid. Podporované hodnoty jsou IID_ICorRuntimeHost nebo IID_ICLRRuntimeHost.

ppv
[out] Vrácený ukazatel rozhraní na riid.

Poznámky

Pokud pwszVersion určuje verzi modulu runtime, která neexistuje, CorBindToRuntimeEx vrátí hodnotu HRESULT CLR_E_SHIM_RUNTIMELOAD.

Kontext spuštění a tok identity Windows

Ve verzi 1 modulu CLR objekt neprotéká asynchronními body, WindowsIdentity jako jsou nová vlákna, fondy vláken nebo zpětná volání časovače. Ve verzi 2.0 modulu CLR ExecutionContext objekt zabalí některé informace o aktuálně spuštěných vláknech a tok přes libovolný asynchronní bod, ale ne přes hranice domény aplikace. Podobně WindowsIdentity objekt také prochází libovolným asynchronním bodem. Proto aktuální zosobnění ve vlákně, pokud existuje, tok také.

Tok můžete změnit dvěma způsoby:

  1. Úpravou ExecutionContext nastavení potlačte tok na základě jednotlivých vláken (viz SuppressFlowmetody , SuppressFlowa SuppressFlowWindowsIdentity ).

  2. Změnou výchozího režimu procesu na režim kompatibility verze 1, kde WindowsIdentity objekt neprotéká přes žádný asynchronní bod bez ExecutionContext ohledu na nastavení v aktuálním vlákně. Způsob změny výchozího režimu závisí na tom, jestli k načtení modulu CLR používáte spravované spustitelné nebo nespravované hostitelské rozhraní:

    1. U spravovaných spustitelných souborů je nutné nastavit enabled atribut elementu< legacyImpersonationPolicy> na truehodnotu .

    2. U nespravovaných hostitelských rozhraní nastavte STARTUP_LEGACY_IMPERSONATION příznak v parametru startupFlags při volání CorBindToRuntimeEx funkce.

    Režim kompatibility verze 1 se vztahuje na celý proces a na všechny domény aplikace v procesu.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: MSCorEE.h

Knihovna: MSCorEE.dll

Verze rozhraní .NET Framework: K dispozici od verze 1.0

Viz také