CorBindToRuntime 函數

允許非管理主機將通用語言執行時(CLR)載入程序。

此函式在 .NET Framework 4 中已被棄用。

語法

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

參數

pwszVersion [在]一個描述你想載入的 CLR 版本的字串。

.NET Framework 中的版本號由四個部分組成,並依期分隔: major.minor.build.revision。 被傳遞為 pwszVersion 的字串必須以字元「v」開頭,接著是版本號的前三個部分(例如「v1.0.1529」)。

某些版本的 CLR 會附帶一份政策聲明,說明是否與先前版本的 CLR 相容性。 預設情況下,啟動 shim 會 pwszVersion 根據政策語句進行評估,並載入與所請求版本相容的最新執行時版本。 主機可以透過傳遞參數的值STARTUP_LOADER_SAFEMODEflags,強制 shim 跳過政策評估,並載入 中pwszVersion指定的精確版本,如下所述。

如果呼叫者指定 null 對 pwszVersion,則會載入最新版本的執行時。 傳遞 null 後,主機無法控制載入哪個版本的執行時間。 雖然這種做法在某些情況下可能適用,但強烈建議主機提供特定版本來載入。

pwszBuildFlavor [在]一個字串,指定是載入伺服器還是工作站 CLR 建置。 有效值為 svrwks。 伺服器建置優化以利用多處理器進行垃圾回收,工作站建置則優化於單處理器機器上執行的客戶端應用。

如果 pwszBuildFlavor 設為 null,工作站建置會被載入。 在單處理器機器上運行時,工作站建置總是會被載入,即使 pwszBuildFlavor 設定為 svr。 然而,如果 pwszBuildFlavor 設定為 且 svr 並列了並行垃圾回收(詳見參數說明 flags ),則伺服器建置會被載入。

rclsid [在]其中實 CLSIDICorRuntimeHostICLRRuntimeHost 介面的 coclass 之一。 支持的值有CLSID_CorRuntimeHost或CLSID_CLRRuntimeHost。

riid[在]來自 IID 的 。rclsid 支援的數值為IID_ICorRuntimeHost或IID_ICLRRuntimeHost。

ppv [出]回傳的介面指標為 riid

備註

pwszVersion 指定不存在的執行版本,則 CorBindToRuntimeEx 回傳 HRESULT 值為 CLR_E_SHIM_RUNTIMELOAD。

CorBindToRuntimeExCorBindToRuntime 執行相同的操作,但函 CorBindToRuntimeEx 式允許你設定旗標來指定 CLR 的行為。

執行上下文與 Windows 身份的流程

在 CLR 版本 1 中, WindowsIdentity 物件不會跨越非同步點,如新執行緒、執行緒池或計時器回撥。 在 CLR 2.0 版本中,物件 ExecutionContext 會包裹目前執行執行緒的部分資訊,並透過任何非同步點流動,但不會跨越應用程式領域邊界。 同樣地,物 WindowsIdentity 體也會流經任何非同步點。 因此,目前在討論串中的模仿(如果有的話)也會順暢進行。

你可以用兩種方式改變流程:

  1. 透過修改 ExecutionContext 設定以抑制每個執行緒的流量(參見 SuppressFlowSuppressFlow、 及 SuppressFlowWindowsIdentity 方法)。

  2. 將程序預設模式改為版本 1 相容模式,該模式中 WindowsIdentity 物件不會流經任何非同步點,無論目前執行緒的 ExecutionContext 設定如何。 如何更改預設模式,取決於你是使用受管理執行檔還是非受管理的託管介面來載入 CLR:

    1. 對於受管理的執行檔,你必須將 legacyImpersonationPolicy> 元素的<屬性設定enabledtrue

    2. 對於非管理型主機介面,呼叫函式時CorBindToRuntimeEx在參數中設定STARTUP_LEGACY_IMPERSONATION旗標flags

    版本 1 相容模式適用於整個程序及流程中的所有應用領域。

要求

平台:請參閱系統需求

標題: MSCorEE.h

圖書館: MSCorEE.dll

.NET Framework 版本: 自 1.0 起提供

另請參閱