프로세스에 공용 언어 런타임 로드
호스트에서 CLR(공용 언어 런타임)을 로드하고 초기화해야만 관리 코드가 실행될 수 있는데 프로세스에 런타임이 아직 실행되지 않는 상태에서는 모든 호스트가 관리되지 않는 스텁으로 시작됩니다. .NET Framework에서는 호스트에서 런타임을 시작하는 데 사용할 수 있는 호스팅 API라고 하는 관리되지 않는 API 집합을 제공합니다. 자세한 내용은 호스팅 인터페이스를 참조하십시오.
참고 |
---|
.NET Framework 버전 4 이전 버전의 .NET Framework에서 제공하는 호스팅 메서드는 더 이상 사용되지 않습니다.이 항목에서 설명하는 .NET Framework 4에 새로 도입된 인터페이스를 사용하는 것이 좋습니다. |
호스트는 다음 절차 중 하나를 따라 CLR을 프로세스에 로드할 수 있습니다.
CLRCreateInstance 함수를 호출하여 ICLRMetaHost 또는 ICLRMetaHostPolicy 인터페이스를 가져옵니다. CLRCreateInstance 함수는 .NET Framework 1.1 및 2.0 호스팅 전역 정적 함수 단원에서 설명하는 모든 CorBindTo* 함수를 대체합니다.
ICLRMetaHost::EnumerateInstalledRuntimes, ICLRMetaHost::GetRuntime 또는 ICLRMetaHostPolicy::GetRequestedRuntime 메서드를 호출하여 유효한 ICLRRuntimeInfo 포인터를 가져옵니다.
ICLRRuntimeInfo::GetInterface 메서드를 호출합니다. rclsid 매개 변수에 대해 CLSID_CLRRuntimeHost를 지정하고 riid 매개 변수에 대해 IID_ICLRRuntimeHost를 지정합니다.
이러한 모든 인터페이스의 프로토타입은 Windows SDK(소프트웨어 개발 키트)의 Include 디렉터리에 있는 Metahost.h file 파일에서 찾을 수 있습니다. 호스트는 ICLRRuntimeInfo 및 ICLRRuntimeHost 인터페이스를 모두 사용하여 로드할 런타임의 버전을 제어하고 가비지 수집 및 어셈블리 로딩과 같은 기본 함수의 동작을 제어할 수 있습니다.
ICLRRuntimeHost 인터페이스를 사용하면 다음과 같은 작업을 수행할 수 있습니다.
ICLRRuntimeHost::Start 메서드를 호출하여 런타임을 시작합니다.
관리 코드를 실행합니다.
공용 언어 런타임에 의해 구현된 관리자에 액세스하는 데 사용할 수 있는 ICLRControl 인터페이스에 대한 포인터를 가져오고 IHostControl 인터페이스를 구현하는 호스트 컨트롤 개체를 등록합니다. 공용 언어 런타임에서는 IHostControl 인터페이스를 호출하여 호스트가 구현하는 관리자를 확인합니다.