Freigeben über


CorBindToRuntimeEx-Funktion

Ermöglicht nicht verwalteten Hosts das Laden der Common Language Runtime (CLR) in einen Prozess. Die CorBindToRuntime - und CorBindToRuntimeEx -Funktionen führen denselben Vorgang aus, aber mit der CorBindToRuntimeEx Funktion können Sie Flags festlegen, um das Verhalten der CLR anzugeben.

Diese Funktion ist in .NET Framework 4 veraltet.

Diese Funktion verwendet einen Satz von Parametern, mit denen ein Host folgende Aktionen ausführen kann:

  • Geben Sie die Version der Laufzeit an, die geladen wird.

  • Geben Sie an, ob der Server- oder Arbeitsstationsbuild geladen werden soll.

  • Steuern, ob gleichzeitige Garbage Collection oder nicht gleichzeitige Garbage Collection durchgeführt wird.

Hinweis

Die gleichzeitige Garbage Collection wird in Anwendungen, in denen der WOW64 x86-Emulator auf 64-Bit-Systemen ausgeführt wird, nicht unterstützt, die die Intel Itanium-Architektur implementieren (früher IA-64 genannt). Weitere Informationen zur Verwendung von WOW64 auf 64-Bit-Windows-Systemen finden Sie unter Ausführen von 32-Bit-Anwendungen.

  • Steuern, ob Assemblys als domänenneutral geladen werden.

  • Rufen Sie einen Schnittstellenzeiger auf einen ICorRuntimeHost ab, der verwendet werden kann, um zusätzliche Optionen zum Konfigurieren einer Instanz der CLR festzulegen, bevor sie gestartet wird.

Syntax

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

Parameter

pwszVersion [in] Eine Zeichenfolge, die die Version der CLR beschreibt, die Sie laden möchten.

Eine Versionsnummer im .NET Framework besteht aus vier Teilen, die durch Punkte getrennt sind: major.minor.build.revision. Die übergebene pwszVersion Zeichenfolge muss mit dem Zeichen "v" beginnen, gefolgt von den ersten drei Teilen der Versionsnummer (z. B. "v1.0.1529").

Einige Versionen der CLR werden mit einer Richtlinienausweisung installiert, die die Kompatibilität mit früheren Versionen der CLR angibt. Standardmäßig wertet pwszVersion der Start-Shim die Richtlinienanweisungen aus und lädt die neueste Version der Laufzeit, die mit der angeforderten Version kompatibel ist. Ein Host kann erzwingen, dass die Richtlinienauswertung übersprungen und die genaue Version geladen wird, die angegeben pwszVersion wird, indem ein Wert für den startupFlags Parameter STARTUP_LOADER_SAFEMODE übergeben wird, wie unten beschrieben.

Wenn der Aufrufer null für pwszVersionangibt, CorBindToRuntimeEx identifiziert den Satz installierter Laufzeiten, deren Versionsnummern niedriger als die .NET Framework 4-Laufzeit sind, und lädt die neueste Version der Laufzeit aus diesem Satz. Das .NET Framework 4 oder höher wird nicht geladen und schlägt fehl, wenn keine frühere Version installiert ist. Beachten Sie, dass das Übergeben von NULL dem Host keine Kontrolle darüber gibt, welche Version der Laufzeit geladen wird. Obwohl dieser Ansatz in einigen Szenarien geeignet sein kann, wird dringend empfohlen, dass der Host eine bestimmte Version zum Laden bereitstellen kann.

pwszBuildFlavor [in] Eine Zeichenfolge, die angibt, ob der Server oder der Arbeitsstationsbuild der CLR geladen werden soll. Gültige Werte sind svr und wks. Der Serverbuild ist optimiert, um mehrere Prozessoren für Garbage Collections zu nutzen, und der Arbeitsstationsbuild ist für Clientanwendungen optimiert, die auf einem Computer mit einem einzelnen Prozessor ausgeführt werden.

Wenn pwszBuildFlavor dieser Wert auf NULL festgelegt ist, wird der Arbeitsstationsbuild geladen. Wenn sie auf einem Einzelprozessorcomputer ausgeführt wird, wird der Arbeitsstationsbuild immer geladen, auch wenn pwszBuildFlavor er auf svr". Wenn pwszBuildFlavor sie jedoch auf svr und gleichzeitige Garbage Collection festgelegt ist (siehe Beschreibung des startupFlags Parameters), wird der Serverbuild geladen.

startupFlags [in] Eine Kombination von Werten der STARTUP_FLAGS-Aufzählung . Diese Flags steuern gleichzeitige Garbage Collection, domänenneutralen Code und das Verhalten des pwszVersion Parameters. Die Standardeinstellung ist eine einzelne Domäne, wenn kein Flag festgelegt ist. Folgende Werte sind gültig:

  • 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

Beschreibungen dieser Flags finden Sie in der STARTUP_FLAGS Enumeration.

rclsid [in] Die CLSID coclass, die entweder die ICorRuntimeHost - oder die ICLRRuntimeHost-Schnittstelle implementiert. Unterstützte Werte sind CLSID_CorRuntimeHost oder CLSID_CLRRuntimeHost.

riid [in] Die IID angeforderte Schnittstelle von rclsid. Unterstützte Werte sind IID_ICorRuntimeHost oder IID_ICLRRuntimeHost.

ppv [out] Der zurückgegebene Schnittstellenzeiger auf riid.

Bemerkungen

Wenn pwszVersion eine Laufzeitversion angegeben wird, die nicht vorhanden ist, CorBindToRuntimeEx wird ein HRESULT-Wert von CLR_E_SHIM_RUNTIMELOAD zurückgegeben.

Ausführungskontext und Ablauf der Windows-Identität

In Version 1 der CLR fließt das WindowsIdentity Objekt nicht über asynchrone Punkte wie neue Threads, Threadpools oder Timerrückrufe. In Version 2.0 der CLR umschließt ein ExecutionContext Objekt einige Informationen zum derzeit ausgeführten Thread und fließt ihn über einen asynchronen Punkt, jedoch nicht über Anwendungsdomänengrenzen hinweg. Ebenso fließt das WindowsIdentity Objekt auch über einen asynchronen Punkt. Daher fließt auch der aktuelle Identitätswechsel im Thread.

Sie können den Fluss auf zwei Arten ändern:

  1. Indem Sie die ExecutionContext Einstellungen ändern, um den Fluss pro Thread zu unterdrücken (siehe die SuppressFlow, SuppressFlowund SuppressFlowWindowsIdentity Methoden).

  2. Durch Ändern des Prozessstandardmodus in den Kompatibilitätsmodus der Version 1, bei dem das WindowsIdentity Objekt nicht über einen asynchronen Punkt fließt, unabhängig von den ExecutionContext Einstellungen im aktuellen Thread. Wie Sie den Standardmodus ändern, hängt davon ab, ob Sie eine verwaltete ausführbare Datei oder eine nicht verwaltete Hostingschnittstelle verwenden, um die CLR zu laden:

    1. Für verwaltete ausführbare Dateien müssen Sie das enabled Attribut des <legacyImpersonationPolicy-Elements> auf truefestlegen.

    2. Legen Sie für nicht verwaltete Hostingschnittstellen das STARTUP_LEGACY_IMPERSONATION Flag im startupFlags Parameter beim Aufrufen der CorBindToRuntimeEx Funktion fest.

    Der Kompatibilitätsmodus der Version 1 gilt für den gesamten Prozess und für alle Anwendungsdomänen im Prozess.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Kopfball: MSCorEE.h

Bibliothek: MSCorEE.dll

.NET Framework-Versionen: Seit Version 1.0 verfügbar.

Siehe auch