CLRCreateInstance 函数 (.NET Framework)

提供以下三个接口之一:ICLRMetaHostICLRMetaHostPolicyICLRDebugging

语法

HRESULT CLRCreateInstance(
    [in]  REFCLSID  clsid,
    [in]  REFIID     riid,
    [out] LPVOID  * ppInterface
);

参数

clsid
[in] 三个类标识符之一:CLSID_CLRMetaHost、CLSID_CLRMetaHostPolicy 或 CLSID_CLRDebugging。

riid
[in] 三个接口标识符 (IID) 之一:IID_ICLRMetaHost、IID_ICLRMetaHostPolicy 或 IID_ICLRDebugging。

ppInterface
[out] 三个接口之一:ICLRMetaHostICLRMetaHostPolicyICLRDebugging

返回值

此方法返回以下特定 HRESULT 以及表示方法失败的 HRESULT 错误。

HRESULT 说明
S_OK 该方法已成功完成。
E_POINTER ppInterface 为 null。

备注

下表显示了支持的 clsidriid 组合。

clsid riid
CLSID_CLRMetaHost IID_ICLRMetaHost
CLSID_CLRMetaHostPolicy IID_ICLRMetaHostPolicy
CLSID_CLRDebugging IID_ICLRDebugging

以下代码演示了如何使用 CLRCreateInstance 获取所有三个接口:

#include <metahost.h>
#pragma comment(lib, "mscoree.lib")

ICLRMetaHost       *pMetaHost       = NULL;
ICLRMetaHostPolicy *pMetaHostPolicy = NULL;
ICLRDebugging      *pCLRDebugging   = NULL;
HRESULT hr;
hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost,
                    (LPVOID*)&pMetaHost);
hr = CLRCreateInstance (CLSID_CLRMetaHostPolicy, IID_ICLRMetaHostPolicy,
                    (LPVOID*)&pMetaHostPolicy);
hr = CLRCreateInstance (CLSID_CLRDebugging, IID_ICLRDebugging,
                    (LPVOID*)&pCLRDebugging);

CreateInterface 函数的别名为 CLRCreateInstanceCLRCreateInstanceCreateInterface 函数均可互换使用。 例如:

HMODULE hModule = LoadLibrary(L"mscoree.dll");
CreateInterfaceFnPtr createInterface = (CreateInterfaceFnPtr)GetProcAddress(hModule, "CreateInterface");
HRESULT hr;
hr = createInterface(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&pMetaHost);
hr = createInterface (CLSID_CLRMetaHostPolicy, IID_ICLRMetaHostPolicy,  (LPVOID*)&pMetaHostPolicy);
hr = createInterface (CLSID_CLRDebugging, IID_ICLRDebugging,  (LPVOID*)&pCLRDebugging);

要求

平台:请参阅系统要求

标头:MetaHost.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 4 起可用

另请参阅