ICLRMetaHostPolicy::GetRequestedRuntime 메서드

호스팅 정책, 관리되는 어셈블리, 버전 문자열 및 구성 스트림에 따라 CLR(공용 언어 런타임)의 기본 버전에 대한 인터페이스를 제공합니다. 이 메서드는 실제로 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);

매개 변수

속성 Description
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이면 사전 할당을 허용하기 위해 GetRequestedRuntime이 반환될 때 pcchVersionpwzVersion의 예상 크기가 포함됩니다. 그러지 않으면 pcchVersionpwzVersion에 기록된 문자 수가 포함됩니다.
pwzImageVersion [out] 선택 사항입니다. GetRequestedRuntime이 반환될 때 반환된 ICLRRuntimeInfo 인터페이스에 해당하는 CLR 버전을 포함합니다.
pcchImageVersion [in, out] 선택 사항입니다. 버퍼 오버런을 방지하기 위해 pwzImageVersion의 크기를 입력으로 지정합니다. pwzImageVersion이 null이면 사전 할당을 허용하기 위해 GetRequestedRuntime이 반환될 때 pcchImageVersionpwzImageVersion의 필수 크기가 포함됩니다.
pdwConfigFlags [out] 선택 사항입니다. GetRequestedRuntime에서 바인딩 프로세스 중에 이 구성 파일을 사용하는 경우 반환 시 pdwConfigFlags<startup> 요소에 useLegacyV2RuntimeActivationPolicy 특성이 설정되어 있는지 여부 및 특성 값을 나타내는 METAHOST_CONFIG_FLAGS 값이 포함됩니다. 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 조합입니다.

Return Value

이 메서드는 다음과 같은 특정 HRESULT뿐만 아니라 메서드 오류를 나타내는 HRESULT 오류도 반환합니다.

HRESULT 설명
S_OK 메서드가 완료되었습니다.
E_POINTER pwzVersion은 null이 아니고 pcchVersion은 null입니다.

또는

pwzImageVersion은 null이 아니고 pcchImageVersion은 null입니다.
E_INVALIDARG dwPolicyFlagsMETAHOST_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부터 사용 가능

참고 항목