ホーム › System.ClrHosting › ICLRMetaHost
ICLRMetaHost
COMメソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pwzVersion | LPWSTR | in | 取得する CLR ランタイムのバージョン文字列を表す、NULL 終端のワイド文字列へのポインタである。 |
| riid | GUID* | in | 要求するランタイムインターフェイスの識別子(IID)を表す GUID へのポインタである。 |
| ppRuntime | void** | out | 要求したランタイムインターフェイス(通常は ICLRRuntimeInfo)へのポインタを受け取る。 |
| pwzFilePath | LPWSTR | in | バージョンを取得する対象ファイルのパスを表す、NULL 終端のワイド文字列へのポインタである。 |
| pwzBuffer | LPWSTR | out | 取得したランタイムバージョン文字列を受け取るワイド文字列バッファへのポインタである。 |
| pcchBuffer | DWORD* | inout | 入力時はバッファのサイズ(文字数)を、出力時は必要な、または書き込まれた文字数を受け取る DWORD へのポインタである。 |
vtbl 5 HRESULT EnumerateInstalledRuntimes(IEnumUnknown** ppEnumerator)
| ppEnumerator | IEnumUnknown** | out | インストール済みの CLR ランタイムを列挙する IEnumUnknown インターフェイスへのポインタを受け取る。 |
vtbl 6 HRESULT EnumerateLoadedRuntimes(HANDLE hndProcess, IEnumUnknown** ppEnumerator)
| hndProcess | HANDLE | in | ロード済みランタイムを列挙する対象プロセスのハンドルである。 |
| ppEnumerator | IEnumUnknown** | out | 指定プロセスにロードされている CLR ランタイムを列挙する IEnumUnknown インターフェイスへのポインタを受け取る。 |
vtbl 7 HRESULT RequestRuntimeLoadedNotification(RuntimeLoadedCallbackFnPtr pCallbackFunction)
| pCallbackFunction | RuntimeLoadedCallbackFnPtr | in | CLR ランタイムがロードされた際に呼び出されるコールバック関数へのポインタである。 |
vtbl 8 HRESULT QueryLegacyV2RuntimeBinding(GUID* riid, void** ppUnk)
| riid | GUID* | in | 問い合わせるインターフェイスの識別子(IID)を表す GUID へのポインタである。 |
| ppUnk | void** | out | レガシーな v2 ランタイムバインディングに関するインターフェイスへのポインタを受け取る。 |
| iExitCode | INT | in | プロセスを終了する際に使用する終了コードを指定する。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ICLRMetaHost "{D332DB9E-B9B3-4125-8207-A14884F53216}" #usecom global ICLRMetaHost IID_ICLRMetaHost "{}" #comfunc global ICLRMetaHost_GetRuntime 3 wstr,var,sptr #comfunc global ICLRMetaHost_GetVersionFromFile 4 wstr,var,var #comfunc global ICLRMetaHost_EnumerateInstalledRuntimes 5 sptr #comfunc global ICLRMetaHost_EnumerateLoadedRuntimes 6 sptr,sptr #comfunc global ICLRMetaHost_RequestRuntimeLoadedNotification 7 sptr #comfunc global ICLRMetaHost_QueryLegacyV2RuntimeBinding 8 var,sptr #comfunc global ICLRMetaHost_ExitProcess 9 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICLRMetaHost "{D332DB9E-B9B3-4125-8207-A14884F53216}" #usecom global ICLRMetaHost IID_ICLRMetaHost "{}" #comfunc global ICLRMetaHost_GetRuntime 3 wstr,sptr,sptr #comfunc global ICLRMetaHost_GetVersionFromFile 4 wstr,sptr,sptr #comfunc global ICLRMetaHost_EnumerateInstalledRuntimes 5 sptr #comfunc global ICLRMetaHost_EnumerateLoadedRuntimes 6 sptr,sptr #comfunc global ICLRMetaHost_RequestRuntimeLoadedNotification 7 sptr #comfunc global ICLRMetaHost_QueryLegacyV2RuntimeBinding 8 sptr,sptr #comfunc global ICLRMetaHost_ExitProcess 9 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。