Функция CorBindToRuntime

Позволяет неуправляемые узлы загружать среду CLR в процесс.

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

Синтаксис

HRESULT CorBindToRuntime (  
    [in]  LPCWSTR     pwszVersion,
    [in]  LPCWSTR     pwszBuildFlavor,
    [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 для flags параметра , как описано ниже.

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

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

Если pwszBuildFlavor для задано значение NULL, загружается сборка рабочей станции. При работе на однопроцессорном компьютере сборка рабочей станции всегда загружается, даже если pwszBuildFlavor для задано значение svr. Однако если pwszBuildFlavor для задано значение svr и указана параллельная сборка мусора (см. описание 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.

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

Контекст выполнения и поток удостоверений 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 флаг в параметре flags при вызове CorBindToRuntimeEx функции.

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

Требования

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

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

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

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

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