共用方式為


CorBindToRuntime 函式

讓 Unmanaged 主應用程式將 Common Language Runtime (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 版本的相容性。 根據預設,啟動 shim 會根據原則陳述式評估 pwszVersion,並載入與所要求版本相容的最新版本的執行階段。 主應用程式可以強制 Shim 略過原則評估,並載入 pwszVersion 中所指定的完全相同的版本,方法是針對 flags 參數傳遞 STARTUP_LOADER_SAFEMODE 的值,如下所述。

    如果呼叫端將 pwszVersion 指定 null,則會載入最新版的執行階段。 傳遞 null 使主應用程式無法控制載入哪個執行階段版本。 雖然這個方法在某些案例中是適當的,但仍強烈建議主應用程式提供要載入的特定版本。

  • pwszBuildFlavor
    [in] 字串,指定是要載入 CLR 的伺服器組建還是工作站組建。 有效值為 svr 和 wks。 伺服器組建經過最佳化,可利用記憶體回收的個處理器,而工作站組建也已經過最佳化,可用於在單一處理器電腦上執行的用戶端應用程式。

    如果 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 值。

Windows 識別的執行內容和流程

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

您可以使用兩種方法來變更流程:

  1. 藉由修改 ExecutionContext 設定,以每個執行緒為基準抑制流程 (請參閱 SuppressFlowSuppressFlowSuppressFlowWindowsIdentity 方法)。

  2. 藉由將處理序預設模式變更為第 1 版相容性模式,不論目前執行緒上的 ExecutionContext 設定為何,WindowsIdentity 物件都不會跨任何非同步點流動。 如何變更預設模式取決於使用 Managed 可執行檔還是使用 Unmanaged 裝載介面來載入 CLR:

    1. 如果是 Managed 可執行檔,則必須將 <legacyImpersonationPolicy> 項目的 enabled 屬性設定為 true。

    2. 如果是 Unmanaged 裝載介面,則在呼叫 CorBindToRuntimeEx 函式時,在 flags 參數中設定 STARTUP_LEGACY_IMPERSONATION 旗標。

    第 1 版相容性模式便會套用至整個處理序和處理序中的所有應用程式定義域。

備註

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

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**MSCorEE.h

**程式庫:**MSCorEE.dll

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

請參閱

參考

CorBindToCurrentRuntime 函式

CorBindToRuntimeByCfg 函式

CorBindToRuntimeEx 函式

CorBindToRuntimeHost 函式

ICorRuntimeHost 介面

其他資源

裝載全域靜態函式的 .NET Framework 1.1 和 2.0