Поделиться через


Функция 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 состоит из четырех частей, отделенных друг от друга точками: основной.дополнительный.построение.редакция. Строка, передаваемая в виде параметра 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.

Контекст выполнения и поток идентификации Windows

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

Этот проход можно изменить двумя способами.

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

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

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

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

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

Заметки

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

Требования

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

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

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

Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0, 1.1, 1.0

См. также

Ссылки

Функция CorBindToCurrentRuntime

Функция CorBindToRuntimeByCfg

Функция CorBindToRuntimeEx

Функция CorBindToRuntimeHost

Интерфейс ICorRuntimeHost

Другие ресурсы

Глобальные статические функции платформ .NET Framework 1.1 и 2.0