Поделиться через


Функция 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

См. также