CorBindToRuntime 函式

啟動非受控主機以將通用語言執行平台 (CLR) 載入流程。

此函式已在 .NET Framework 4 中已被取代。

語法

HRESULT CorBindToRuntime (  
    [in]  LPCWSTR     pwszVersion,
    [in]  LPCWSTR     pwszBuildFlavor,
    [in]  REFCLSID    rclsid,
    [in]  REFIID      riid,
    [out] LPVOID FAR  *ppv  
);  

參數

pwszVersion
[in] 該字串說明您希望載入的 CLR 版本。

.NET Framework中的版本號碼包含四個以句點分隔的部分:major.minor.build.revision。 作為 pwszVersion 傳遞的字串必須以字元「v」開頭,後面接著版本號碼的前三個部分 (例如 「v1.0.1529」)。

某些版本的 CLR 會與原則陳述式一起安裝,以指定與舊版 CLR 的相容性。 根據預設,啟動填充碼會根據原則陳述式評估 pwszVersion,並載入與所要求版本相容的最新版本執行階段。 主機可以強制填充碼略過原則評估,並傳遞 flags 參數的 STARTUP_LOADER_SAFEMODE 值,以載入 pwszVersion 中指定的版本,如下所示。

如果呼叫端針對 pwszVersion 指定 null,則會載入最新版本的執行階段。 傳遞 null,會讓主機無法控制載入哪個版本的執行階段。 雖然此方法可能適用於某些情節,但我們強烈建主機提供待載入的特定版本。

pwszBuildFlavor
[in] 指定是否載入伺服器或 CLR 的工作站組建。 有效值為 svrwks。 伺服器組建已經過最佳化,可利用多個處理器進行記憶體回收,而工作站組建也已針對在單一處理器電腦上執行的用戶端應用程式進行最佳化。

如果 pwszBuildFlavor 設定為 null,則系統會載入工作站組建。 在單一處理器電腦上執行時,即使 pwszBuildFlavor 設定為 svr,工作站組建仍會一律載入。 然而,如果 pwszBuildFlavor 已設定為 svr,且已指定同時記憶體回收 (請參閱 flags 參數的說明),則會載入伺服器組建。

rclsid
[in] 實作 ICorRuntimeHostICLRRuntimeHost 介面之 coclass 的 CLSID。 受支援的值為 CLSID_CorRuntimeHost 或 CLSID_CLRRuntimeHost。

riid
[in] 來自 rclsid 要求介面的 IID。 受支援的值為 IID_ICorRuntimeHost 或 IID_ICLRRuntimeHost。

ppv
[out] 傳回的介面指標 riid

備註

如果 pwszVersion 指定不存在的執行階段版本,則 CorBindToRuntimeEx 會傳回 CLR_E_SHIM_RUNTIMELOAD 的 HRESULT 值。

CorBindToRuntimeExCorBindToRuntime 會執行相同的作業,但 CorBindToRuntimeEx 函式可供您設定旗標來指定 CLR 的行為。

Windows 身分識別的執行內容和流程

在 CLR 第 1 版中,WindowsIdentity 物件不會流經非同步點,例如新的執行緒、執行緒集區或計時器回呼。 在 CLR 2.0 版中,ExecutionContext 物件會包裝目前執行中的執行緒的一些資訊,並使其流經任何非同步點,但不會跨越應用程式定義域界限。 同樣地,WindowsIdentity 物件也會流經任何非同步點。 因此,其也會流經執行緒上目前存在的模擬。

您可透過兩種方式改變流程:

  1. 修改 ExecutionContext 設定來隱藏每個執行緒基礎的流程 (請參閱 SuppressFlowSuppressFlowSuppressFlowWindowsIdentity 方法)。

  2. 將流程預設模式變更為第 1 版相容性模式,不管目前執行緒上的 ExecutionContext 設定為何,WindowsIdentity 物件都不會流經任何非同步點。 變更預設模式的方式,取決於您是否使用受控可執行檔或非受控裝載介面來載入 CLR:

    1. 針對受控可執行檔,您必須將 <legacyImpersonationPolicy> 元素的 enabled 屬性設定為 true

    2. 針對非受控裝載主控介面,請在呼叫 CorBindToRuntimeEx 函式時,設定 flags 參數中的 STARTUP_LEGACY_IMPERSONATION 旗標。

    第 1 版相容性模式適用於整個流程,以及流程中的所有應用程式定義域。

規格需求

平台:請參閱系統需求

標題: MSCorEE.h

程式庫: MSCorEE.dll

.NET Framework版本:自 1.0 起提供

另請參閱