Функция 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 | Description |
---|---|
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
. CreateInterface
Обе CLRCreateInstance
функции можно использовать взаимозаменяемо. Например:
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