Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Umożliwia hostom niezarządzanym ładowanie środowiska uruchomieniowego języka wspólnego (CLR) do procesu. Funkcja CorBindToRuntime wykonuje CorBindToRuntimeEx tę samą operację, ale CorBindToRuntimeEx funkcja umożliwia ustawienie flag w celu określenia zachowania środowiska CLR.
Ta funkcja została uznana za przestarzałą w programie .NET Framework 4.
Ta funkcja przyjmuje zestaw parametrów, które umożliwiają hostowi wykonywanie następujących czynności:
Określ wersję środowiska uruchomieniowego, która zostanie załadowana.
Określ, czy należy załadować kompilację serwera lub stacji roboczej.
Określ, czy jest wykonywane współbieżne odzyskiwanie pamięci, czy niebieżne odzyskiwanie pamięci.
Uwaga / Notatka
Współbieżne odzyskiwanie pamięci nie jest obsługiwane w aplikacjach z emulatorem WOW64 x86 w systemach 64-bitowych, które implementują architekturę Intel Itanium (dawniej IA-64). Aby uzyskać więcej informacji na temat korzystania z WOW64 w 64-bitowych systemach Windows, zobacz Running 32-bit Applications (Uruchamianie aplikacji 32-bitowych).
Określ, czy zestawy są ładowane jako neutralne dla domeny.
Uzyskaj wskaźnik interfejsu do elementu ICorRuntimeHost , który może służyć do ustawiania dodatkowych opcji konfigurowania wystąpienia środowiska CLR przed jego uruchomieniem.
Składnia
HRESULT CorBindToRuntimeEx (
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszBuildFlavor,
[in] DWORD startupFlags,
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID FAR *ppv
);
Parametry
pwszVersion [in] Ciąg opisujący wersję środowiska CLR, który chcesz załadować.
Numer wersji w programie .NET Framework składa się z czterech części rozdzielonych kropkami: major.minor.build.revision. Ciąg przekazany jako pwszVersion musi zaczynać się od znaku "v", a następnie pierwszych trzech części numeru wersji (na przykład "v1.0.1529").
Niektóre wersje środowiska CLR są instalowane za pomocą instrukcji zasad, która określa zgodność z poprzednimi wersjami środowiska CLR. Domyślnie podkładka uruchamiania oblicza instrukcje pwszVersion zasad i ładuje najnowszą wersję środowiska uruchomieniowego zgodnego z żądaną wersją. Host może wymusić pominięcie oceny zasad i załadowanie dokładnej wersji określonej w pwszVersion programie, przekazując wartość parametru STARTUP_LOADER_SAFEMODEstartupFlags zgodnie z poniższym opisem.
Jeśli obiekt wywołujący określa wartość null dla pwszVersionprogramu , CorBindToRuntimeEx zidentyfikuje zestaw zainstalowanych środowisk uruchomieniowych, których numery wersji są niższe niż środowisko uruchomieniowe programu .NET Framework 4, i ładuje najnowszą wersję środowiska uruchomieniowego z tego zestawu. Nie zostanie załadowany program .NET Framework 4 lub nowszy i nie powiedzie się, jeśli nie zainstalowano starszej wersji. Należy pamiętać, że przekazywanie wartości null nie daje hostowi kontroli nad wersją środowiska uruchomieniowego, która jest ładowana. Mimo że takie podejście może być odpowiednie w niektórych scenariuszach, zdecydowanie zaleca się, aby host dostarczał określoną wersję do załadowania.
pwszBuildFlavor [in] Ciąg, który określa, czy załadować serwer, czy stację roboczą kompilacji CLR. Prawidłowe wartości to svr i wks. Kompilacja serwera jest zoptymalizowana pod kątem korzystania z wielu procesorów na potrzeby odzyskiwania pamięci, a kompilacja stacji roboczej jest zoptymalizowana pod kątem aplikacji klienckich działających na maszynie z jednym procesorem.
Jeśli pwszBuildFlavor ustawiono wartość null, zostanie załadowana kompilacja stacji roboczej. W przypadku uruchamiania na maszynie z jednym procesorem kompilacja stacji roboczej jest zawsze ładowana, nawet jeśli pwszBuildFlavor jest ustawiona na svrwartość . Jeśli pwszBuildFlavor jednak ustawiono wartość i svr określono współbieżne odzyskiwanie pamięci (zobacz opis parametru startupFlags ), zostanie załadowana kompilacja serwera.
startupFlags [in] Kombinacja wartości wyliczenia STARTUP_FLAGS . Te flagi sterują współbieżnym odzyskiwaniem pamięci, kodem neutralnym dla domeny i zachowaniem parametru pwszVersion . Wartość domyślna to pojedyncza domena, jeśli nie ustawiono flagi. Następujące wartości są prawidłowe:
STARTUP_CONCURRENT_GCSTARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAINSTARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN_HOSTSTARTUP_LOADER_SAFEMODESTARTUP_LOADER_SETPREFERENCESTARTUP_SERVER_GCSTARTUP_HOARD_GC_VMSTARTUP_SINGLE_VERSION_HOSTING_INTERFACESTARTUP_LEGACY_IMPERSONATIONSTARTUP_DISABLE_COMMITTHREADSTACKSTARTUP_ALWAYSFLOW_IMPERSONATION
Opisy tych flag można znaleźć w STARTUP_FLAGS wyliczenie.
rclsid [in] Klasa CLSID coclass, która implementuje interfejs ICorRuntimeHost lub ICLRRuntimeHost . Obsługiwane wartości to CLSID_CorRuntimeHost lub CLSID_CLRRuntimeHost.
riid [in] Żądany IID interfejs z pliku rclsid. Obsługiwane wartości to IID_ICorRuntimeHost lub IID_ICLRRuntimeHost.
ppv [out] Zwrócony wskaźnik interfejsu na riid.
Uwagi
Jeśli pwszVersion określa wersję środowiska uruchomieniowego, która nie istnieje, CorBindToRuntimeEx zwraca wartość HRESULT CLR_E_SHIM_RUNTIMELOAD.
Kontekst wykonywania i przepływ tożsamości systemu Windows
W wersji 1 środowiska CLR obiekt nie przepływa między punktami asynchronicznymi, WindowsIdentity takimi jak nowe wątki, pule wątków lub wywołania zwrotne czasomierza. W wersji 2.0 środowiska CLR ExecutionContext obiekt opakowuje niektóre informacje o aktualnie wykonywanym wątku i przepływa je w dowolnym punkcie asynchronicznym, ale nie przez granice domeny aplikacji. WindowsIdentity Podobnie obiekt przepływa również w dowolnym punkcie asynchronicznym. W związku z tym bieżąca personifikacja wątku, jeśli istnieje, również przepływa.
Przepływ można zmienić na dwa sposoby:
Modyfikując ustawienia, ExecutionContext aby pominąć przepływ dla poszczególnych wątków (zobacz SuppressFlowmetody , SuppressFlowi SuppressFlowWindowsIdentity ).
Zmieniając tryb domyślny procesu na tryb zgodności w wersji 1, w którym WindowsIdentity obiekt nie przepływa w żadnym punkcie asynchronicznym, niezależnie od ExecutionContext ustawień bieżącego wątku. Sposób zmiany trybu domyślnego zależy od tego, czy używasz zarządzanego pliku wykonywalnego, czy niezarządzanego interfejsu hostingu w celu załadowania środowiska CLR:
W przypadku zarządzanych plików wykonywalnych należy ustawić
enabledatrybut starszego< elementuImpersonationPolicy> natruewartość .W przypadku niezarządzanych interfejsów hostingu ustaw flagę
STARTUP_LEGACY_IMPERSONATIONw parametrzestartupFlagspodczas wywoływaniaCorBindToRuntimeExfunkcji.
Tryb zgodności w wersji 1 dotyczy całego procesu i wszystkich domen aplikacji w procesie.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówek: MSCorEE.h
Biblioteka: MSCorEE.dll
Wersje programu .NET Framework: dostępne od wersji 1.0