CorBindToRuntime-funktion
Gör att ohanterade värdar kan läsa in CLR (Common Language Runtime) i en process.
Den här funktionen är inaktuell i .NET Framework 4.
Syntax
HRESULT CorBindToRuntime (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *ppv
);
Parametrar
pwszVersion
[in] 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 första tre delarna av versionsnumret (till exempel "v1.0.1529").
Vissa versioner av CLR installeras med en principbeskrivning 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 värdet STARTUP_LOADER_SAFEMODE
för för parametern enligt beskrivningen flags
nedan.
Om anroparen anger null för pwszVersion
läses den senaste versionen av körningen in. 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
[in] 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 alltid arbetsstationsversionen in, även om pwszBuildFlavor
är inställt svr
på . Men om pwszBuildFlavor
är inställt på svr
och samtidig skräpinsamling anges (se beskrivningen av parametern flags
) läses serverversionen in.
rclsid
[in] För CLSID
den coclass som implementerar ICorRuntimeHost - eller ICLRRuntimeHost-gränssnittet . Värden som stöds är CLSID_CorRuntimeHost eller CLSID_CLRRuntimeHost.
riid
[in] För IID
det 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 hresult-värdet CLR_E_SHIM_RUNTIMELOAD.
CorBindToRuntimeEx och CorBindToRuntime
utför samma åtgärd, men CorBindToRuntimeEx
med funktionen kan du ange flaggor för att ange CLR-beteendet.
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 för närvarande och flödar den över alla asynkrona punkter, men inte över programdomängränserna. På samma sätt flödar objektet WindowsIdentity även över alla asynkrona punkter. Därför flödar den aktuella personifieringen i tråden, om någon, också.
Du kan ändra flödet på två sätt:
Genom att ExecutionContext ändra inställningarna för att förhindra flödet per tråd (se SuppressFlowmetoderna , SuppressFlowoch SuppressFlowWindowsIdentity ).
Genom att ändra processens standardläge 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 en hanterad körbar fil eller ett 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 parameternflags
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