Функция 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.revision. Строка, переданная как pwszVersion , должна начинаться с символа "v", за которым следует первые три части номера версии (например, "v1.0.1529").

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

Если вызывающий объект задает значение 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] класса 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 версии 2.0 объект заключает в оболочку ExecutionContext некоторые сведения о выполняемом в данный момент потоке и передает их через любую асинхронную точку, но не через границы домена приложения. Аналогичным образом объект WindowsIdentity также проходит через любую асинхронную точку. Таким образом, текущее олицетворение в потоке, если таковое имеется, также передается.

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

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

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

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

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

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

Требования

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

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

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

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

См. также раздел