CorBindToRuntimeEx — Funkcja

Umożliwia hostom niezaładowym ładowanie środowiska uruchomieniowego języka wspólnego (CLR) do procesu. CorBindToRuntime i funkcje wykonują tę samą operację, CorBindToRuntimeEx ale funkcja umożliwia ustawienie flag w celu określenia zachowania clr.

Ta funkcja została wycofana w .NET Framework 4.

Ta funkcja przyjmuje zestaw parametrów, które umożliwiają hostowi:

  • Określ wersję środowiska uruchomieniowego, które zostanie załadowane.

  • Wskaż, czy ma zostać załadowana kompilacja serwera lub stacji roboczej.

  • Kontrolowanie, czy jest wykonywane współbieżne odzyskiwanie pamięci, czy niebieżne wyrzucanie elementów bezużytecznych.

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 (wcześniej nazywaną IA-64). Aby uzyskać więcej informacji na temat korzystania z usługi WOW64 w 64-bitowych systemach Windows, zobacz Running 32-bit Applications (Uruchamianie aplikacji 32-bitowych).

  • Kontroluj, czy zestawy są ładowane jako neutralne dla domen.

  • Uzyskaj wskaźnik interfejsu do klasy ICorRuntimeHost , który może służyć do ustawienia dodatkowych opcji konfigurowania wystąpienia clr przed jego rozpoczęciem.

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ę clr, który chcesz załadować.

Numer wersji w pliku .NET Framework składa się z czterech części rozdzielonych kropkami: główna.pomocnicza.kompilacja.poprawka. Ciąg przekazany jako musi pwszVersion 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 instrukcje zasad, które określają zgodność z poprzednimi wersjami środowiska CLR. Domyślnie podkładka uruchamiania jest oceniana pwszVersion względem instrukcji zasad i ładuje najnowszą wersję środowiska uruchomieniowego, która jest zgodna z żądaną wersją. Host może wymusić pominięcie oceny pwszVersionSTARTUP_LOADER_SAFEMODEstartupFlags zasad i załadowanie dokładnej wersji określonej w parametrze przez przekazanie wartości parametru zgodnie z poniższym opisem.

Jeśli obiekt wywołujący określi wartość null pwszVersiondla programu , CorBindToRuntimeEx zidentyfikuje zestaw zainstalowanych środowisk uruchomieniowych, których numery wersji są niższe niż wersja środowiska uruchomieniowego programu .NET Framework 4, i załaduje najnowszą wersję środowiska uruchomieniowego z tego zestawu. Nie spowoduje to załadowania wersji .NET Framework 4 lub nowszej i zakończy się niepowodzeniem, jeśli nie jest zainstalowana żadna wcześniejsza wersja. Należy pamiętać, że przekazanie wartości null nie zapewnia hostowi żadnej kontroli nad tym, która wersja środowiska uruchomieniowego jest ładowana. Chociaż takie podejście może być odpowiednie w niektórych scenariuszach, zdecydowanie zaleca się, aby host podał określoną wersję do załadowania.

pwszBuildFlavor
[in] Ciąg określający, czy załadować serwer, czy kompilację stacji roboczej clr. Prawidłowe wartości to svr i wks. Kompilacja serwera jest zoptymalizowana pod kątem korzystania z wielu procesorów do odśmiecania 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 wartość svr. Jeśli jednak zostanie pwszBuildFlavor ustawiona wartość i svr zostanie określony współbieżny sposób wyrzucania elementów bezużytecznych (zobacz opis startupFlags parametru), zostanie załadowana kompilacja serwera.

startupFlags
[in] Kombinacja wartości wyliczenia STARTUP_FLAGS . Te flagi kontrolują współbieżne wyrzucanie elementów bezużytecznych, kod neutralny dla domeny i zachowanie parametru pwszVersion . Wartość domyślna to pojedyncza domena, jeśli flaga nie jest ustawiona. 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_LEGACY_IMPERSONATION

  • 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, zobacz STARTUP_FLAGS wyliczenia .

rclsid
[in] Klasę CLSID coclass, która implementuje interfejs CLSID lub ICLRRuntimeHost . Obsługiwane wartości to CLSID_CorRuntimeHost lub CLSID_CLRRuntimeHost.

riid
[in] Dla IID żądanego interfejsu z rclsid. Obsługiwane wartości to IID_ICorRuntimeHost lub IID_ICLRRuntimeHost.

ppv
[out] Zwrócony wskaźnik interfejsu do riid.

Uwagi

Jeśli pwszVersion określono wersję środowiska uruchomieniowego, która nie istnieje, CorBindToRuntimeEx zwraca wartość HRESULT CLR_E_SHIM_RUNTIMELOAD.

Kontekst wykonywania i Flow tożsamości Windows

W wersji 1 clr obiekt nie przepływa przez punkty asynchroniczne, WindowsIdentity takie jak nowe wątki, pule wątków lub wywołania zwrotne czasomierza. W wersji 2.0 CLR ExecutionContext obiekt opakowywuje pewne informacje o aktualnie wykonywanym wątku i przepływa go przez dowolny punkt asynchroniczny, ale nie przez granice domeny aplikacji. Podobnie obiekt przepływa WindowsIdentity również przez dowolny punkt asynchroniczny. W związku z tym bieżące personifikacji w wątku, jeśli jest, przepływy również.

Przepływ można zmienić na dwa sposoby:

  1. Modyfikując ustawienia ExecutionContext w celu pomijania przepływu dla każdego wątku (zobacz SuppressFlowmetody , SuppressFlowi SuppressFlowWindowsIdentity ).

  2. Zmieniając tryb domyślny procesu na tryb zgodności wersji 1, WindowsIdentity w którym obiekt nie przepływa przez żaden punkt asynchroniczny, ExecutionContext niezależnie od ustawień w bieżącym wątku. Sposób zmiany trybu domyślnego zależy od tego, czy do załadowania clr używasz zarządzanego pliku wykonywalnego, czy nieza zarządzania interfejsem hostingu:

    1. W przypadku zarządzanych plików wykonywalnych należy ustawić enabledenabled na wartość true.

    2. W przypadku nieza zarządzania interfejsami hostingu ustaw STARTUP_LEGACY_IMPERSONATION flagę w parametrze startupFlags podczas wywoływania CorBindToRuntimeEx funkcji.

    Tryb zgodności wersji 1 ma zastosowanie do całego procesu i wszystkich domen aplikacji w procesie.

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: MSCorEE.h

Biblioteka: MSCorEE.dll

.NET Framework wersji: dostępne od wersji 1.0

Zobacz też