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
);

Parameters

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 skickades 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 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 att läsa 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 värdet är 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 på svr. Men om pwszBuildFlavor är inställt på svr och samtidig skräpinsamling har angetts (se beskrivningen av parametern flags ) läses serverversionen in.

rclsid [i] För CLSID den coclass som implementerar antingen ICorRuntimeHost eller ICLRRuntimeHost-gränssnittet . 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.

Anmärkningar

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

CorBindToRuntimeEx och CorBindToRuntime utför samma åtgärd, men CorBindToRuntimeEx med funktionen kan du ange flaggor för att ange beteendet för CLR.

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. Därför flödar den aktuella personifieringen i tråden, om det finns några, 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 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 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.

Requirements

Plattformar: Se Systemkrav.

Rubrik: MSCorEE.h

Bibliotek: MSCorEE.dll

.NET Framework-versioner: Finns sedan 1.0

Se även