ホーム › System.Diagnostics.ClrProfiling › ICorProfilerInfo4
ICorProfilerInfo4
COMメソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 71 HRESULT EnumThreads(ICorProfilerThreadEnum** ppEnum)
| ppEnum | ICorProfilerThreadEnum** | out | プロファイル対象プロセス内の全マネージスレッドを列挙する ICorProfilerThreadEnum インターフェイスへのポインタを受け取る。 |
vtbl 72 HRESULT InitializeCurrentThread()
| cFunctions | DWORD | in | moduleIds 配列および methodIds 配列に含まれる再 JIT 対象関数の数を指定する。 |
| moduleIds | UINT_PTR* | in | 再 JIT するメソッドが属するモジュールの ID を格納した配列へのポインタである。 |
| methodIds | DWORD* | in | 再 JIT するメソッドのメタデータトークンを格納した配列へのポインタである。 |
vtbl 74 HRESULT RequestRevert(DWORD cFunctions, UINT_PTR* moduleIds, DWORD* methodIds, HRESULT* status)
| cFunctions | DWORD | in | moduleIds 配列および methodIds 配列に含まれる復元対象関数の数を指定する。 |
| moduleIds | UINT_PTR* | in | 元の(再 JIT 前の)コードへ復元するメソッドが属するモジュールの ID を格納した配列へのポインタである。 |
| methodIds | DWORD* | in | 復元するメソッドのメタデータトークンを格納した配列へのポインタである。 |
| status | HRESULT* | out | 各関数の復元結果を表す HRESULT を受け取る配列へのポインタである。エラーステータスが不要なら NULL を指定できる。 |
vtbl 75 HRESULT GetCodeInfo3(UINT_PTR functionID, UINT_PTR reJitId, DWORD cCodeInfos, DWORD* pcCodeInfos, COR_PRF_CODE_INFO* codeInfos)
| functionID | UINT_PTR | in | ネイティブコード情報を取得する関数の ID を指定する。 |
| reJitId | UINT_PTR | in | 対象とする再 JIT バージョンの識別子を指定する。元のバージョンを指す場合は 0 を指定する。 |
| cCodeInfos | DWORD | in | codeInfos バッファが保持できる COR_PRF_CODE_INFO 要素の数を指定する。 |
| pcCodeInfos | DWORD* | out | 利用可能な COR_PRF_CODE_INFO 要素の総数を受け取る。 |
| codeInfos | COR_PRF_CODE_INFO* | out | 関数のネイティブコードブロックを表す COR_PRF_CODE_INFO 構造体を受け取る配列である。 |
| ip | BYTE* | in | マネージコード内の命令ポインタ(IP)を指すアドレスである。 |
| pFunctionId | UINT_PTR* | out | 指定した命令ポインタを含む関数の ID を受け取る。 |
| pReJitId | UINT_PTR* | out | その命令ポインタに対応する再 JIT バージョンの識別子を受け取る。 |
vtbl 77 HRESULT GetReJITIDs(UINT_PTR functionId, DWORD cReJitIds, DWORD* pcReJitIds, UINT_PTR* reJitIds)
| functionId | UINT_PTR | in | 再 JIT バージョン ID を取得する関数の ID を指定する。 |
| cReJitIds | DWORD | in | reJitIds 配列が保持できる要素数を指定する。 |
| pcReJitIds | DWORD* | out | 利用可能な再 JIT ID の総数を受け取る。 |
| reJitIds | UINT_PTR* | out | 指定関数の各再 JIT バージョンの識別子を受け取る配列である。 |
vtbl 78 HRESULT GetILToNativeMapping2(UINT_PTR functionId, UINT_PTR reJitId, DWORD cMap, DWORD* pcMap, COR_DEBUG_IL_TO_NATIVE_MAP* map)
| functionId | UINT_PTR | in | IL からネイティブコードへのマッピングを取得する関数の ID を指定する。 |
| reJitId | UINT_PTR | in | 対象とする再 JIT バージョンの識別子を指定する。元のバージョンを指す場合は 0 を指定する。 |
| cMap | DWORD | in | map 配列が保持できる COR_DEBUG_IL_TO_NATIVE_MAP 要素の数を指定する。 |
| pcMap | DWORD* | out | 利用可能なマッピングエントリの総数を受け取る。 |
| map | COR_DEBUG_IL_TO_NATIVE_MAP* | out | IL オフセットとネイティブコードオフセットの対応を表す COR_DEBUG_IL_TO_NATIVE_MAP 構造体を受け取る配列である。 |
vtbl 79 HRESULT EnumJITedFunctions2(ICorProfilerFunctionEnum** ppEnum)
| ppEnum | ICorProfilerFunctionEnum** | out | JIT コンパイル済みの関数を列挙する ICorProfilerFunctionEnum インターフェイスへのポインタを受け取る。 |
| objectId | UINT_PTR | in | サイズを取得する対象オブジェクトの ID を指定する。 |
| pcSize | UINT_PTR* | out | 指定オブジェクトのサイズ(バイト数)を受け取る。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ICorProfilerInfo4 "{0D8FDCAA-6257-47BF-B1BF-94DAC88466EE}" #usecom global ICorProfilerInfo4 IID_ICorProfilerInfo4 "{}" #comfunc global ICorProfilerInfo4_EnumThreads 71 sptr #comfunc global ICorProfilerInfo4_InitializeCurrentThread 72 #comfunc global ICorProfilerInfo4_RequestReJIT 73 int,var,var #comfunc global ICorProfilerInfo4_RequestRevert 74 int,var,var,var #comfunc global ICorProfilerInfo4_GetCodeInfo3 75 sptr,sptr,int,var,var #comfunc global ICorProfilerInfo4_GetFunctionFromIP2 76 var,var,var #comfunc global ICorProfilerInfo4_GetReJITIDs 77 sptr,int,var,var #comfunc global ICorProfilerInfo4_GetILToNativeMapping2 78 sptr,sptr,int,var,var #comfunc global ICorProfilerInfo4_EnumJITedFunctions2 79 sptr #comfunc global ICorProfilerInfo4_GetObjectSize2 80 sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICorProfilerInfo4 "{0D8FDCAA-6257-47BF-B1BF-94DAC88466EE}" #usecom global ICorProfilerInfo4 IID_ICorProfilerInfo4 "{}" #comfunc global ICorProfilerInfo4_EnumThreads 71 sptr #comfunc global ICorProfilerInfo4_InitializeCurrentThread 72 #comfunc global ICorProfilerInfo4_RequestReJIT 73 int,sptr,sptr #comfunc global ICorProfilerInfo4_RequestRevert 74 int,sptr,sptr,sptr #comfunc global ICorProfilerInfo4_GetCodeInfo3 75 sptr,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo4_GetFunctionFromIP2 76 sptr,sptr,sptr #comfunc global ICorProfilerInfo4_GetReJITIDs 77 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo4_GetILToNativeMapping2 78 sptr,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo4_EnumJITedFunctions2 79 sptr #comfunc global ICorProfilerInfo4_GetObjectSize2 80 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。