Udostępnij za pośrednictwem


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 pwszVersionparametru , 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 svrwartość . 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:

  1. Modyfikując ustawienia w ExecutionContext celu pomijania przepływu dla poszczególnych wątków (zobacz SuppressFlowmetody , SuppressFlowi SuppressFlowWindowsIdentity ).

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

    1. W przypadku zarządzanych plików wykonywalnych należy ustawić enabled atrybut starszego< elementuImpersonationPolicy> na truewartość .

    2. W przypadku niezarządzanych interfejsów hostingu ustaw flagę STARTUP_LEGACY_IMPERSONATION w parametrze startupFlags podczas wywoływania CorBindToRuntimeEx 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

Zobacz też