CLRCreateInstance 函数 (.NET Framework)
提供以下三个接口之一:ICLRMetaHost、ICLRMetaHostPolicy 或 ICLRDebugging。
语法
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] 三个接口之一:ICLRMetaHost、ICLRMetaHostPolicy 或 ICLRDebugging。
返回值
此方法返回以下特定 HRESULT 以及表示方法失败的 HRESULT 错误。
HRESULT | 说明 |
---|---|
S_OK | 该方法已成功完成。 |
E_POINTER | ppInterface 为 null。 |
备注
下表显示了支持的 clsid
和 riid
组合。
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
函数的别名为 CLRCreateInstance
。 CLRCreateInstance
和 CreateInterface
函数均可互换使用。 例如:
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 起可用