將 Common Language Runtime 載入處理序
主應用程式必須先載入和初始化 Common Language Runtime (CLR),然後才能夠執行任一 Managed 程式碼。 因為執行階段還沒有在處理序中執行,所以所有主應用程式都是使用 Unmanaged Stub 啟動。 .NET Framework 提供了一組主應用程式 (Host) 可用來啟動執行階段的 Unmanaged 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。
這些介面的原型全都位於 Metahost.h 檔案,該檔案則位於 Windows Software Development Kit (SDK) 的 Include 目錄中。 主機可同時使用 ICLRRuntimeInfo 和 ICLRRuntimeHost 介面控制要使用哪個版本的執行階段,以及控制基本函式的行為,例如記憶體回收和組件載入等。
使用 ICLRRuntimeHost 介面執行下列動作︰
藉由呼叫 ICLRRuntimeHost::Start 方法,啟動執行階段。
執行 Managed 程式碼。
取得指向 ICLRControl 介面的指標 (該介面可存取 Common Language Runtime 實作的管理員),並註冊實作 IHostControl 介面的主控制項物件。 Common Language Runtime 會呼叫 IHostControl 介面來決定主應用程式要實作哪些管理員。