CLRCreateInstance 関数 (.NET Framework)
ICLRMetaHost、ICLRMetaHostPolicy、または ICLRDebugging の 3 つのインターフェイスのいずれかを提供します。
構文
HRESULT CLRCreateInstance(
[in] REFCLSID clsid,
[in] REFIID riid,
[out] LPVOID * ppInterface
);
パラメーター
clsid
[in] CLSID_CLRMetaHost、CLSID_CLRMetaHostPolicy、または CLSID_CLRDebugging の 3 つのクラス識別子のいずれか。
riid
[in] IID_ICLRMetaHost、IID_ICLRMetaHostPolicy、または IID_ICLRDebugging の 3 つのインターフェイス識別子 (IID) のいずれか。
ppInterface
[out] ICLRMetaHost、ICLRMetaHostPolicy、または ICLRDebugging の 3 つのインターフェイスのいずれか。
戻り値
このメソッドは、次の特定の 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
を使用して 3 つのインターフェイスをすべて取得する方法を示しています。
#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 以降で使用可能
関連項目
.NET