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 pwszVersion
CorBindToRuntimeEx
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 svr
på . 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:
Genom att ExecutionContext ändra inställningarna för att ignorera flödet per tråd (se SuppressFlowmetoderna , SuppressFlowoch SuppressFlowWindowsIdentity ).
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:
För hanterade körbara filer måste du ange
enabled
attributet för elementet <legacyImpersonationPolicy> tilltrue
.För ohanterade värdgränssnitt anger du
STARTUP_LEGACY_IMPERSONATION
flaggan i parameternstartupFlags
när duCorBindToRuntimeEx
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