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
[em] Um dos três identificadores de classe: CLSID_CLRMetaHost, CLSID_CLRMetaHostPolicy ou CLSID_CLRDebugging.
riid
[em] Um dos três identificadores de interface (IIDs): IID_ICLRMetaHost, IID_ICLRMetaHostPolicy ou IID_ICLRDebugging.
ppInterface
[saídas] Uma das três interfaces: ICLRMetaHost, ICLRMetaHostPolicy ou ICLRDebugging.
Valor Devolvido
Esse método retorna os seguintes HRESULTs específicos, bem como erros HRESULT que indicam falha do método.
HRESULTADO | Descrição |
---|---|
S_OK | O método foi concluído com êxito. |
E_POINTER | ppInterface é null. |
Observações
A tabela a seguir mostra as combinações suportadas para clsid
e riid
.
clsid |
riid |
---|---|
CLSID_CLRMetaHost | IID_ICLRMetaHost |
CLSID_CLRMetaHostPolicy | IID_ICLRMetaHostPolicy |
CLSID_CLRDebugging | IID_ICLRDebugging |
O código a seguir mostra como usar CLRCreateInstance
para obter todas 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 CreateInterface
função é aliased para CLRCreateInstance
. Ambas as CLRCreateInstance
funções podem CreateInterface
ser usadas de forma 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: Consulte Requisitos do sistema.
Cabeçalho: MetaHost.h
Biblioteca: Incluído como um recurso no MSCorEE.dll
Versões do .NET Framework: Disponível desde 4