ICLRMetaHostPolicy::GetRequestedRuntime 方法

提供基于宿主策略、托管程序集、版本字符串和配置流的公共语言运行时 (CLR) 的首选版本的接口。 此方法不是真正加载或激活 CLR,而只是返回表示策略结果的 ICLRRuntimeInfo 接口。 此方法取代了 GetRequestedRuntimeInfoGetRequestedRuntimeVersionCorBindToRuntimeHostCorBindToRuntimeByCfgGetCORRequiredVersion 方法。

语法

HRESULT GetRequestedRuntime(
    [in]  METAHOST_POLICY_FLAGS dwPolicyFlags,
    [in]  LPCWSTR pwzBinary,
    [in]  IStream *pCfgStream,
    [in, out, size_is(*pcchVersion)] LPWSTR pwzVersion,
    [in, out]  DWORD *pcchVersion,
    [out, size_is(*pcchImageVersion)] LPWSTR pwzImageVersion,
    [in, out]  DWORD *pcchImageVersion,
    [out] DWORD *pdwConfigFlags,
    [in]  REFIID  riid
    [out, iid_is(riid), retval] LPVOID *ppRuntime);

参数

名称 说明
dwPolicyFlags [in] 必需。 指定 METAHOST_POLICY_FLAGS 枚举的成员,表示某个绑定策略,以及任意数量的修饰符。 当前可用的策略只有 METAHOST_POLICY_HIGHCOMPAT

修饰符包括 METAHOST_POLICY_EMULATE_EXE_LAUNCHMETAHOST_POLICY_APPLY_UPGRADE_POLICYMETAHOST_POLICY_SHOW_ERROR_DIALOGMETAHOST_POLICY_USE_PROCESS_IMAGE_PATHMETAHOST_POLICY_ENSURE_SKU_SUPPORTED
pwzBinary [in] 可选。 指定程序集文件路径。
pCfgStream [in] 可选。 指定配置文件作为 System.Runtime.InteropServices.ComTypes.IStream
pwzVersion [in, out] 可选。 指定或返回要加载的首选 CLR 版本。
pcchVersion [in, out] 必需。 输入时指定 pwzVersion 的预期的大小,以避免缓冲区溢出。 如果 pwzVersion 为 null,则当 GetRequestedRuntime 返回时,pcchVersion 包含 pwzVersion 的预期的大小以允许预分配;否则为 pcchVersion 包含写入 pwzVersion 的字符数量。
pwzImageVersion [out] 可选。 当 GetRequestedRuntime 返回时,包含对应于返回的 ICLRRuntimeInfo 接口的 CLR 版本。
pcchImageVersion [in, out] 可选。 输入时指定 pwzImageVersion 的预期的大小以避免缓冲区溢出。 如果 pwzImageVersion 为 null,则当 GetRequestedRuntime 返回时,pcchImageVersion 包含 pwzImageVersion 的所需大小,以允许预分配。
pdwConfigFlags [out] 可选。 如果 GetRequestedRuntime 在绑定过程中使用配置文件,则当它返回时,pdwConfigFlags 包含 METAHOST_CONFIG_FLAGS 值,该值指示 <startup> 元素是否具有 useLegacyV2RuntimeActivationPolicy 属性集以及属性的值。 将 METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_MASK 掩码应用于 pdwConfigFlags 以获取与 useLegacyV2RuntimeActivationPolicy 相关的值。
riid [in] 指定请求的 ICLRRuntimeInfo 接口的接口标识符 IID_ICLRRuntimeInfo。
ppRuntime [out] 当 GetRequestedRuntime 返回时,包含指向对应的 ICLRRuntimeInfo 接口的指针。

注解

如果此方法成功,当且仅当一个或多个以下元素存在于 <configuration><runtime> 部分内的配置流中时,该方法具有将其他标志与返回运行时接口的当前默认启动标志结合的副作用:

  • <gcServer enabled="true"/> 导致 STARTUP_SERVER_GC 将被设置。

  • <etwEnable enabled="true"/> 导致 STARTUP_ETW 将被设置。

  • <appDomainResourceMonitoring enabled="true"/> 导致 STARTUP_ARM 将被设置。

产生的默认 STARTUP_FLAGS 值是从前述列表设置的值与默认启动标志的按位“或”组合。

返回值

此方法返回以下特定 HRESULT 以及表示方法失败的 HRESULT 错误。

HRESULT 说明
S_OK 该方法已成功完成。
E_POINTER pwzVersion 不为 null 且 pcchVersion 为 null。

-或-

pwzImageVersion 不为 null 且 pcchImageVersion 为 null。
E_INVALIDARG dwPolicyFlags 未指定 METAHOST_POLICY_HIGHCOMPAT
ERROR_INSUFFICIENT_BUFFER 分配给 pwzVersion 的内存不足。

-或-

分配给 pwzImageVersion 的内存不足。
CLR_E_SHIM_RUNTIMELOAD dwPolicyFlags 包括 METAHOST_POLICY_APPLY_UPGRADE_POLICY,并且 pwzVersionpcchVersion 均为 null。

要求

平台:请参阅系统要求

标头:MetaHost.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 4 起可用

另请参阅