ICLRMetaHostPolicy::GetRequestedRuntime 方法

提供 Common Language Runtime (CLR) 慣用版本的介面,這是根據裝載原則、Managed 組件、版本字串和組態資料流。 此方法實際上不會載入或啟用 CLR,而只會傳回代表原則結果的 ICLRRuntimeInfo 介面。 此方法會取代 GetRequestedRuntimeInfo、GetRequestedRuntimeVersion、CorBindToRuntimeHost、CorBindToRuntimeByCfg 和 GetCORRequiredVersion 方法。

語法

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_LAUNCH、METAHOST_POLICY_APPLY_UPGRADE_POLICY、METAHOST_POLICY_SHOW_ERROR_DIALOG、METAHOST_POLICY_USE_PROCESS_IMAGE_PATH 和 METAHOST_POLICY_ENSURE_SKU_SUPPORTED。
pwzBinary [in] 選用。 指定組件檔路徑。
pCfgStream [in] 選用。 以 System.Runtime.InteropServices.ComTypes.IStream 指定組態檔。
pwzVersion [in, out] 選用。 指定或傳回要載入的慣用 CLR 版本。
pcchVersion [in, out] 必要項。 指定 pwzVersion 做為輸入的預期大小,以避免緩衝區滿溢。 如果 pwzVersion 為 null,pcchVersion 包含 GetRequestedRuntime 傳回時 pwzVersion 的預期大小,以便預先配置,否則 pcchVersion 包含要寫入 pwzVersion 的字元數目。
pwzImageVersion [out] 選用。 當 GetRequestedRuntime 傳回時,包含對應至傳回之 ICLRRuntimeInfo 介面的 CLR 版本。
pcchImageVersion [in, out] 選用。 指定 pwzImageVersion 做為輸入的大小,以避免緩衝區滿溢。 如果 pwzImageVersion 為 null, pcchImageVersion 包含 GetRequestedRuntime 傳回時的 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 值是從上述清單設定之值與預設啟動旗標值的位元 OR 合併。

傳回值

這個方法會傳回下列特定的 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,且 pwzVersion 和 pcchVersion 都是 null。

規格需求

平台:請參閱系統需求。

標頭:MetaHost.h

程式庫:包含作為 MSCorEE.dll 中的資源

.NET Framework版本:自 4 起可用

另請參閱