Função CLRCreateInstance (.NET Framework)

Fornece uma das três interfaces: ICLRMetaHost, ICLRMetaHostPolicy ou ICLRDebugging.

Sintaxe

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

Parâmetros

clsid
[in] Um dos três identificadores de classe: CLSID_CLRMetaHost, CLSID_CLRMetaHostPolicy ou CLSID_CLRDebugging.

riid
[in] Um dos três IIDs (identificadores de interface): IID_ICLRMetaHost, IID_ICLRMetaHostPolicy ou IID_ICLRDebugging.

ppInterface
[out] Uma das três interfaces: ICLRMetaHost, ICLRMetaHostPolicy ou ICLRDebugging.

Valor Retornado

Esse método retorna os seguintes HRESULTs específicos, bem como erros HRESULT que indicam falha de método.

HRESULT Descrição
S_OK O método foi concluído com sucesso.
E_POINTER ppInterface é nulo.

Comentários

A tabela a seguir mostra as combinações com suporte para clsid e riid.

clsid riid
CLSID_CLRMetaHost IID_ICLRMetaHost
CLSID_CLRMetaHostPolicy IID_ICLRMetaHostPolicy
CLSID_CLRDebugging IID_ICLRDebugging

O seguinte código mostra como usar CLRCreateInstance para obter as três interfaces:

#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);

A função CreateInterface é transformada em um alias para CLRCreateInstance. As funções CLRCreateInstance e CreateInterface podem ser usadas de maneira intercambiável. Por exemplo:

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);

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: MetaHost.h

Biblioteca: incluída como um recurso no MSCorEE.dll

Versões do .NET Framework: disponíveis desde 4

Confira também