Win32 API 日本語リファレンス
ホームSystem.Diagnostics.ClrProfiling › ICorProfilerInfo4

ICorProfilerInfo4

COM
IID0d8fdcaa-6257-47bf-b1bf-94dac88466ee継承元ICorProfilerInfo3自前メソッド開始 vtbl71

メソッド 10

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 71 HRESULT EnumThreads(ICorProfilerThreadEnum** ppEnum)
ppEnumICorProfilerThreadEnum**outプロファイル対象プロセス内の全マネージスレッドを列挙する ICorProfilerThreadEnum インターフェイスへのポインタを受け取る。
vtbl 72 HRESULT InitializeCurrentThread()
vtbl 73 HRESULT RequestReJIT(DWORD cFunctions, UINT_PTR* moduleIds, DWORD* methodIds)
cFunctionsDWORDinmoduleIds 配列および methodIds 配列に含まれる再 JIT 対象関数の数を指定する。
moduleIdsUINT_PTR*in再 JIT するメソッドが属するモジュールの ID を格納した配列へのポインタである。
methodIdsDWORD*in再 JIT するメソッドのメタデータトークンを格納した配列へのポインタである。
vtbl 74 HRESULT RequestRevert(DWORD cFunctions, UINT_PTR* moduleIds, DWORD* methodIds, HRESULT* status)
cFunctionsDWORDinmoduleIds 配列および methodIds 配列に含まれる復元対象関数の数を指定する。
moduleIdsUINT_PTR*in元の(再 JIT 前の)コードへ復元するメソッドが属するモジュールの ID を格納した配列へのポインタである。
methodIdsDWORD*in復元するメソッドのメタデータトークンを格納した配列へのポインタである。
statusHRESULT*out各関数の復元結果を表す HRESULT を受け取る配列へのポインタである。エラーステータスが不要なら NULL を指定できる。
vtbl 75 HRESULT GetCodeInfo3(UINT_PTR functionID, UINT_PTR reJitId, DWORD cCodeInfos, DWORD* pcCodeInfos, COR_PRF_CODE_INFO* codeInfos)
functionIDUINT_PTRinネイティブコード情報を取得する関数の ID を指定する。
reJitIdUINT_PTRin対象とする再 JIT バージョンの識別子を指定する。元のバージョンを指す場合は 0 を指定する。
cCodeInfosDWORDincodeInfos バッファが保持できる COR_PRF_CODE_INFO 要素の数を指定する。
pcCodeInfosDWORD*out利用可能な COR_PRF_CODE_INFO 要素の総数を受け取る。
codeInfosCOR_PRF_CODE_INFO*out関数のネイティブコードブロックを表す COR_PRF_CODE_INFO 構造体を受け取る配列である。
vtbl 76 HRESULT GetFunctionFromIP2(BYTE* ip, UINT_PTR* pFunctionId, UINT_PTR* pReJitId)
ipBYTE*inマネージコード内の命令ポインタ(IP)を指すアドレスである。
pFunctionIdUINT_PTR*out指定した命令ポインタを含む関数の ID を受け取る。
pReJitIdUINT_PTR*outその命令ポインタに対応する再 JIT バージョンの識別子を受け取る。
vtbl 77 HRESULT GetReJITIDs(UINT_PTR functionId, DWORD cReJitIds, DWORD* pcReJitIds, UINT_PTR* reJitIds)
functionIdUINT_PTRin再 JIT バージョン ID を取得する関数の ID を指定する。
cReJitIdsDWORDinreJitIds 配列が保持できる要素数を指定する。
pcReJitIdsDWORD*out利用可能な再 JIT ID の総数を受け取る。
reJitIdsUINT_PTR*out指定関数の各再 JIT バージョンの識別子を受け取る配列である。
vtbl 78 HRESULT GetILToNativeMapping2(UINT_PTR functionId, UINT_PTR reJitId, DWORD cMap, DWORD* pcMap, COR_DEBUG_IL_TO_NATIVE_MAP* map)
functionIdUINT_PTRinIL からネイティブコードへのマッピングを取得する関数の ID を指定する。
reJitIdUINT_PTRin対象とする再 JIT バージョンの識別子を指定する。元のバージョンを指す場合は 0 を指定する。
cMapDWORDinmap 配列が保持できる COR_DEBUG_IL_TO_NATIVE_MAP 要素の数を指定する。
pcMapDWORD*out利用可能なマッピングエントリの総数を受け取る。
mapCOR_DEBUG_IL_TO_NATIVE_MAP*outIL オフセットとネイティブコードオフセットの対応を表す COR_DEBUG_IL_TO_NATIVE_MAP 構造体を受け取る配列である。
vtbl 79 HRESULT EnumJITedFunctions2(ICorProfilerFunctionEnum** ppEnum)
ppEnumICorProfilerFunctionEnum**outJIT コンパイル済みの関数を列挙する ICorProfilerFunctionEnum インターフェイスへのポインタを受け取る。
vtbl 80 HRESULT GetObjectSize2(UINT_PTR objectId, UINT_PTR* pcSize)
objectIdUINT_PTRinサイズを取得する対象オブジェクトの ID を指定する。
pcSizeUINT_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 指定が可能。