Dela via


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 pwszVersionlä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 svrpå . 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:

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

  2. 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:

    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 flags 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