Функция 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 также проходит через любую асинхронную точку. Таким образом, текущее олицетворение в потоке, если таковое имеется, также передается.
Поток можно изменить двумя способами:
Путем изменения параметров для подавления ExecutionContext потока для каждого потока (см. SuppressFlowметоды , SuppressFlowи SuppressFlowWindowsIdentity ).
Путем изменения режима по умолчанию процесса на режим совместимости версии 1, где WindowsIdentity объект не проходит через асинхронную точку, независимо от ExecutionContext параметров в текущем потоке. Способ изменения режима по умолчанию зависит от того, используется ли управляемый исполняемый файл или неуправляемый интерфейс размещения для загрузки среды CLR:
Для управляемых исполняемых файлов необходимо задать
enabled
атрибуту <элемента legacyImpersonationPolicy> значениеtrue
.Для неуправляемых интерфейсов размещения установите
STARTUP_LEGACY_IMPERSONATION
флаг в параметреflags
при вызовеCorBindToRuntimeEx
функции.
Режим совместимости версии 1 применяется ко всему процессу и ко всем доменам приложений в процессе.
Требования
Платформы: см. раздел Требования к системе.
Заголовка: MSCorEE.h
Библиотека: MSCorEE.dll
версии платформа .NET Framework: доступно с версии 1.0.