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

ICorProfilerInfo8

COM
IIDc5ac80a6-782e-4716-8044-39598c60cfbf継承元ICorProfilerInfo7自前メソッド開始 vtbl87

メソッド 3

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

vtbl 87 HRESULT IsFunctionDynamic(UINT_PTR functionId, BOOL* isDynamic)
functionIdUINT_PTRin動的に生成されたメソッドかどうかを調べる関数の ID を指定する。
isDynamicBOOL*out対象が動的メソッド(メタデータトークンを持たない)の場合に TRUE を受け取る。
vtbl 88 HRESULT GetFunctionFromIP3(BYTE* ip, UINT_PTR* functionId, UINT_PTR* pReJitId)
ipBYTE*inマネージコード内の命令ポインタ(IP)を指すアドレスである。
functionIdUINT_PTR*out指定した命令ポインタを含む関数の ID を受け取る。動的メソッドも対象となる。
pReJitIdUINT_PTR*outその命令ポインタに対応する再 JIT バージョンの識別子を受け取る。
vtbl 89 HRESULT GetDynamicFunctionInfo(UINT_PTR functionId, UINT_PTR* moduleId, BYTE** ppvSig, DWORD* pbSig, DWORD cchName, DWORD* pcchName, LPWSTR wszName)
functionIdUINT_PTRin情報を取得する動的メソッドの関数 ID を指定する。
moduleIdUINT_PTR*out動的メソッドが属するモジュールの ID を受け取る。
ppvSigBYTE**outメソッドのシグネチャ blob へのポインタを受け取る。
pbSigDWORD*outシグネチャ blob のバイト数を受け取る。
cchNameDWORDinwszName バッファが保持できる文字数(終端 NULL を含む)を指定する。
pcchNameDWORD*outメソッド名に必要な実際の文字数を受け取る。
wszNameLPWSTRout動的メソッドの名前を受け取るバッファである。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ICorProfilerInfo8 "{C5AC80A6-782E-4716-8044-39598C60CFBF}"
#usecom global ICorProfilerInfo8 IID_ICorProfilerInfo8 "{}"
#comfunc global ICorProfilerInfo8_IsFunctionDynamic       87 sptr,var
#comfunc global ICorProfilerInfo8_GetFunctionFromIP3      88 var,var,var
#comfunc global ICorProfilerInfo8_GetDynamicFunctionInfo  89 sptr,var,var,var,int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。