Бөлісу құралы:


Функция CorBindToRuntimeEx

Позволяет неуправляемые узлы загружать среду CLR в процесс. Функция CorBindToRuntime и CorBindToRuntimeEx функции выполняют ту же операцию, но CorBindToRuntimeEx функция позволяет задать флаги для указания поведения среды CLR.

Эта функция не рекомендуется использовать в .NET Framework 4.

Эта функция принимает набор параметров, позволяющих узлу выполнять следующие действия:

  • Укажите версию среды выполнения, которая будет загружена.

  • Укажите, следует ли загружать сборку сервера или рабочей станции.

  • Определите, выполняется ли параллельная сборка мусора или не одновременная сборка мусора.

Замечание

Параллельная сборка мусора не поддерживается в приложениях с эмулятором WOW64 x86 на 64-разрядных системах, реализующих архитектуру Intel Itanium (ранее называемую IA-64). Дополнительные сведения об использовании WOW64 в 64-разрядных системах Windows см. в статье "Запуск 32-разрядных приложений".

  • Укажите, загружаются ли сборки как доменные нейтральные.

  • Получите указатель интерфейса на ICorRuntimeHost , который можно использовать для настройки дополнительных параметров для настройки экземпляра среды CLR перед его запуском.

Синтаксис

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

Параметры

pwszVersion [in] Строка, описывающая версию среды CLR, которую требуется загрузить.

Номер версии в .NET Framework состоит из четырех частей, разделенных точками: major.minor.build.version. Строка, передаваемая как pwszVersion должна начинаться с символа "v", за которым следует первые три части номера версии (например, "v1.0.1529").

Некоторые версии среды CLR устанавливаются с помощью инструкции политики, которая указывает совместимость с предыдущими версиями среды CLR. По умолчанию схим запуска вычисляется pwszVersion по операторам политики и загружает последнюю версию среды выполнения, совместимую с запрошенной версией. Узел может принудительно пропустить оценку политики и загрузить точную версию, указанную в pwszVersionSTARTUP_LOADER_SAFEMODEstartupFlags параметре, как описано ниже.

Если вызывающий объект задает значение NULL pwszVersion, определяет набор установленных сред выполнения, CorBindToRuntimeEx номера версий которых ниже среды выполнения .NET Framework 4 и загружают последнюю версию среды выполнения из этого набора. Он не загружает .NET Framework 4 или более поздней версии и завершается ошибкой, если более ранняя версия не установлена. Обратите внимание, что передача null не позволяет узлу контролировать, какую версию среды выполнения загружается. Хотя этот подход может быть подходящим в некоторых сценариях, настоятельно рекомендуется предоставить узлу определенную версию для загрузки.

pwszBuildFlavor [in] Строка, указывающая, следует ли загружать сервер или сборку рабочей станции среды CLR. Допустимые значения — svr и wks. Сборка сервера оптимизирована для использования нескольких процессоров для сборок мусора, а сборка рабочей станции оптимизирована для клиентских приложений, работающих на одном процессоре.

Если pwszBuildFlavor задано значение NULL, сборка рабочей станции загружается. При запуске на одном процессоре сборка рабочей станции всегда загружается, даже если pwszBuildFlavor задано svrзначение . Однако если pwszBuildFlavor задано svr значение и задана параллельная сборка мусора (см. описание startupFlags параметра), сборка сервера загружается.

startupFlags [in] Сочетание значений перечисления STARTUP_FLAGS . Эти флаги управляют параллельной сборкой мусора, кодом, нейтральным доменом и поведением pwszVersion параметра. По умолчанию используется один домен, если флаг не задан. Допустимы следующие значения:

  • 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

Описание этих флагов см. в перечислении STARTUP_FLAGS .

rclsid [in] Coclass CLSID , реализующий интерфейс ICorRuntimeHost или ICLRRuntimeHost . Поддерживаемые значения : CLSID_CorRuntimeHost или CLSID_CLRRuntimeHost.

riid [in] Запрошенный IID интерфейс из rclsid. Поддерживаемые значения : IID_ICorRuntimeHost или IID_ICLRRuntimeHost.

ppv [out] Возвращаемый указатель riidинтерфейса на .

Замечания

Если pwszVersion указывает версию среды выполнения, которая не существует, CorBindToRuntimeEx возвращает значение HRESULT CLR_E_SHIM_RUNTIMELOAD.

Контекст выполнения и поток удостоверения Windows

В версии 1 среды CLR WindowsIdentity объект не проходит через асинхронные точки, такие как новые потоки, пулы потоков или обратные вызовы таймера. В среде CLR ExecutionContext версии 2.0 объект упаковывает некоторые сведения о выполняемом потоке и передает его через любую асинхронную точку, но не через границы домена приложения. Аналогичным образом WindowsIdentity объект также передается по любой асинхронной точке. Таким образом, текущее олицетворение в потоке, если таковой имеется, также передается.

Поток можно изменить двумя способами:

  1. Изменив параметры для подавления ExecutionContext потока на основе каждого потока (смSuppressFlow. раздел и SuppressFlowSuppressFlowWindowsIdentity методы).

  2. Изменив режим по умолчанию процесса на режим совместимости версии 1, где WindowsIdentity объект не проходит через асинхронную точку независимо от ExecutionContext параметров текущего потока. Изменение режима по умолчанию зависит от того, используется ли управляемый исполняемый файл или неуправляемый интерфейс размещения для загрузки среды CLR:

    1. Для управляемых исполняемых файлов необходимо задать enabled атрибут устаревшего< элементаImpersonationPolicy>true.

    2. Для неуправляемых интерфейсов размещения установите STARTUP_LEGACY_IMPERSONATION флаг в параметре startupFlags при вызове CorBindToRuntimeEx функции.

    Режим совместимости версии 1 применяется ко всему процессу и ко всем доменам приложений в процессе.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: MSCorEE.h

Библиотека: MSCorEE.dll

версии платформа .NET Framework: Доступно с версии 1.0

См. также