Dela via


CorBindToRuntimeEx-funktion

Gör det möjligt för ohanterade värdar att läsa in CLR (Common Language Runtime) i en process. Funktionerna CorBindToRuntime och CorBindToRuntimeEx utför samma åtgärd, men CorBindToRuntimeEx med funktionen kan du ange flaggor för att ange beteendet för CLR.

Den här funktionen har blivit inaktuell i .NET Framework 4.

Den här funktionen tar en uppsättning parametrar som gör att en värd kan göra följande:

  • Ange vilken version av körningen som ska läsas in.

  • Ange om server- eller arbetsstationsversionen ska läsas in.

  • Kontrollera om samtidig skräpinsamling eller icke-samtidig skräpinsamling görs.

Anteckning

Samtidig skräpinsamling stöds inte i program som kör WOW64 x86-emulatorn på 64-bitarssystem som implementerar Intel Itanium-arkitekturen (kallades tidigare IA-64). Mer information om hur du använder WOW64 på 64-bitars Windows-system finns i Köra 32-bitarsprogram.

  • Kontrollera om sammansättningar läses in som domänneutrala.

  • Hämta en gränssnittspekare till en ICorRuntimeHost som kan användas för att ange ytterligare alternativ för att konfigurera en instans av CLR innan den startas.

Syntax

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

Parametrar

pwszVersion
[i] En sträng som beskriver den version av CLR som du vill läsa in.

Ett versionsnummer i .NET Framework består av fyra delar avgränsade med punkter: major.minor.build.revision. Strängen som skickas som pwszVersion måste börja med tecknet "v" följt av de tre första delarna av versionsnumret (till exempel "v1.0.1529").

Vissa versioner av CLR installeras med en principsats som anger kompatibilitet med tidigare versioner av CLR. Som standard utvärderas start-shim mot principinstruktioner pwszVersion och läser in den senaste versionen av körningen som är kompatibel med den version som begärs. En värd kan tvinga shim att hoppa över principutvärderingen och läsa in den exakta versionen som anges i pwszVersion genom att skicka ett värde STARTUP_LOADER_SAFEMODE för för parametern enligt beskrivningen startupFlags nedan.

Om anroparen anger null för pwszVersionCorBindToRuntimeEx identifierar den uppsättning installerade körningsvärden vars versionsnummer är lägre än .NET Framework 4-körning och läser in den senaste versionen av körningen från den uppsättningen. Den läser inte in .NET Framework 4 eller senare och misslyckas om ingen tidigare version har installerats. Observera att om du skickar null får värden ingen kontroll över vilken version av körningen som läses in. Även om den här metoden kan vara lämplig i vissa scenarier rekommenderar vi starkt att värden anger en specifik version som ska läsas in.

pwszBuildFlavor
[i] En sträng som anger om servern eller arbetsstationsversionen av CLR ska läsas in. Giltiga värden är svr och wks. Serverversionen är optimerad för att dra nytta av flera processorer för skräpsamlingar och arbetsstationsversionen är optimerad för klientprogram som körs på en dator med en processor.

Om pwszBuildFlavor är inställt på null läses arbetsstationsversionen in. När du kör på en dator med en processor läses arbetsstationsversionen alltid in, även om pwszBuildFlavor den är inställd svrpå . Men om pwszBuildFlavor är inställt på svr och samtidig skräpinsamling anges (se beskrivningen av parametern startupFlags ) läses serverversionen in.

startupFlags
[i] En kombination av värden för STARTUP_FLAGS uppräkning. Dessa flaggor styr samtidig skräpinsamling, domänneutral kod och parameterns pwszVersion beteende. Standardvärdet är enskild domän om ingen flagga har angetts. Följande värden är giltiga:

  • 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

Beskrivningar av dessa flaggor finns i STARTUP_FLAGS uppräkning.

rclsid
[i] För CLSID den coclass som implementerar gränssnittet ICorRuntimeHost eller ICLRRuntimeHost . Värden som stöds är CLSID_CorRuntimeHost eller CLSID_CLRRuntimeHost.

riid
[i] Det IID begärda gränssnittet från rclsid. Värden som stöds är IID_ICorRuntimeHost eller IID_ICLRRuntimeHost.

ppv
[ut] Den returnerade gränssnittspekaren till riid.

Kommentarer

Om pwszVersion anger en körningsversion som inte finns CorBindToRuntimeEx returnerar ett HRESULT-värde för CLR_E_SHIM_RUNTIMELOAD.

Körningskontext och flöde för Windows-identitet

I version 1 av CLR WindowsIdentity flödar objektet inte över asynkrona punkter, till exempel nya trådar, trådpooler eller timeråteranrop. I version 2.0 av CLR omsluter ett ExecutionContext objekt viss information om den tråd som körs just nu och flödar den över alla asynkrona punkter, men inte över programdomängränser. På samma sätt flödar objektet WindowsIdentity även över alla asynkrona punkter. Den aktuella personifieringen i tråden flödar därför också.

Du kan ändra flödet på två sätt:

  1. Genom att ExecutionContext ändra inställningarna för att ignorera flödet per tråd (se SuppressFlowmetoderna , SuppressFlowoch SuppressFlowWindowsIdentity ).

  2. Genom att ändra standardläget för processen till kompatibilitetsläget version 1, där WindowsIdentity objektet inte flödar över någon asynkron punkt, oavsett ExecutionContext inställningarna i den aktuella tråden. Hur du ändrar standardläget beror på om du använder ett hanterat körbart eller ohanterat värdgränssnitt för att läsa in CLR:

    1. För hanterade körbara filer måste du ange enabled attributet för elementet <legacyImpersonationPolicy> till true.

    2. För ohanterade värdgränssnitt anger du STARTUP_LEGACY_IMPERSONATION flaggan i parametern startupFlags när du CorBindToRuntimeEx anropar funktionen.

    Kompatibilitetsläget version 1 gäller för hela processen och för alla programdomäner i processen.

Krav

Plattformar: Se Systemkrav.

Huvudet: MSCorEE.h

Bibliotek: MSCorEE.dll

.NET Framework versioner: Tillgänglig sedan 1.0

Se även