CorBindToRuntimeEx — Funkcja
Umożliwia hostom niezarządzanym ładowanie środowiska uruchomieniowego języka wspólnego (CLR) do procesu. CorBindToRuntime i CorBindToRuntimeEx
funkcje wykonują 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 .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 odbywa się współbieżne odzyskiwanie pamięci, czy niebieżne odzyskiwanie pamięci.
Uwaga
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órą chcesz załadować.
Numer wersji w .NET Framework składa się z czterech części rozdzielonych kropkami: główna.pomocnicza.kompilacja.poprawka. Ciąg przekazany jako pwszVersion
musi zaczynać się od znaku "v", po którym następuje pierwsze trzy części numeru wersji (na przykład "v1.0.1529").
Niektóre wersje środowiska CLR są instalowane z instrukcją zasad, która określa zgodność z poprzednimi wersjami środowiska CLR. Domyślnie podkładka uruchamiania ocenia 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
pliku przez przekazanie wartości STARTUP_LOADER_SAFEMODE
dla parametru startupFlags
, zgodnie z poniższym opisem.
Jeśli obiekt wywołujący określa wartość null dla pwszVersion
parametru , CorBindToRuntimeEx
identyfikuje zestaw zainstalowanych środowisk uruchomieniowych, których numery wersji są niższe niż .NET Framework 4 środowiska uruchomieniowego i ładuje najnowszą wersję środowiska uruchomieniowego z tego zestawu. Nie zostanie załadowany .NET Framework 4 lub nowszy i nie powiedzie się, jeśli nie zainstalowano wcześniejszej wersji. Należy pamiętać, że przekazanie wartości null nie daje hostowi kontroli nad wersją środowiska uruchomieniowego. Chociaż 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 określający, czy należy załadować serwer, czy stację roboczą kompilacji środowiska 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
parametr ma 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 svr
wartość . Jeśli pwszBuildFlavor
jednak ustawiono wartość svr
i 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_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
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] Element IID
żądanego interfejsu z klasy 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 go w dowolnym punkcie asynchronicznym, ale nie poza granicami 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 w ExecutionContext celu pomijania przepływu 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. Zmiana trybu domyślnego zależy od tego, czy do załadowania środowiska CLR jest używany zarządzany plik wykonywalny, czy niezarządzany interfejs hostingu:
W przypadku zarządzanych plików wykonywalnych należy ustawić
enabled
atrybut starszego< elementuImpersonationPolicy> natrue
wartość .W przypadku niezarządzanych interfejsów hostingu ustaw flagę
STARTUP_LEGACY_IMPERSONATION
w parametrzestartupFlags
podczas wywoływaniaCorBindToRuntimeEx
funkcji.
Tryb zgodności w wersji 1 dotyczy całego procesu i wszystkich domen aplikacji w procesie.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: MSCorEE.h
Biblioteka: MSCorEE.dll
wersje .NET Framework: dostępne od wersji 1.0