ホーム › System.Diagnostics.ClrProfiling › ICorProfilerInfo
ICorProfilerInfo
COMメソッド 33
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| objectId | UINT_PTR | in | クラスを取得する対象のオブジェクトの識別子である。 |
| pClassId | UINT_PTR* | out | オブジェクトのクラスの識別子を受け取るポインタである。 |
| moduleId | UINT_PTR | in | 型を含むモジュールの識別子である。 |
| typeDef | DWORD | in | クラスを表す TypeDef メタデータトークンである。 |
| pClassId | UINT_PTR* | out | 取得されたクラスの識別子を受け取るポインタである。 |
| functionId | UINT_PTR | in | ネイティブコード情報を取得する対象の関数の識別子である。 |
| pStart | BYTE** | out | 関数のネイティブコードの先頭アドレスを受け取るバイトポインタへのポインタである。 |
| pcSize | DWORD* | out | 関数のネイティブコードのバイト数を受け取る DWORD へのポインタである。 |
| pdwEvents | DWORD* | out | 現在設定されているイベント通知フラグ (COR_PRF_MONITOR) を受け取る DWORD へのポインタである。 |
| ip | BYTE* | in | 関数を特定する対象となる命令ポインタ (ネイティブコードアドレス) である。 |
| pFunctionId | UINT_PTR* | out | 命令ポインタに対応する関数の識別子を受け取るポインタである。 |
| moduleId | UINT_PTR | in | 関数を含むモジュールの識別子である。 |
| token | DWORD | in | 関数を表すメタデータトークンである。 |
| pFunctionId | UINT_PTR* | out | 取得された関数の識別子を受け取るポインタである。 |
| threadId | UINT_PTR | in | ハンドルを取得する対象のスレッドの識別子である。 |
| phThread | HANDLE* | out | スレッドの Win32 ハンドルを受け取る HANDLE へのポインタである。 |
| objectId | UINT_PTR | in | サイズを取得する対象のオブジェクトの識別子である。 |
| pcSize | DWORD* | out | オブジェクトのサイズ (バイト数) を受け取る DWORD へのポインタである。 |
vtbl 11 HRESULT IsArrayClass(UINT_PTR classId, CorElementType* pBaseElemType, UINT_PTR* pBaseClassId, DWORD* pcRank)
| classId | UINT_PTR | in | 配列クラスかどうかを判定する対象のクラスの識別子である。 |
| pBaseElemType | CorElementType* | out | 配列の要素の基本型を受け取る CorElementType へのポインタである。 |
| pBaseClassId | UINT_PTR* | out | 配列要素のクラスの識別子を受け取るポインタである。 |
| pcRank | DWORD* | out | 配列の次元数 (ランク) を受け取る DWORD へのポインタである。 |
| threadId | UINT_PTR | in | 情報を取得する対象のスレッドの識別子である。 |
| pdwWin32ThreadId | DWORD* | out | 対応する Win32 スレッド ID を受け取る DWORD へのポインタである。 |
| pThreadId | UINT_PTR* | out | 現在のマネージドスレッドの識別子を受け取るポインタである。 |
| classId | UINT_PTR | in | 情報を取得する対象のクラスの識別子である。 |
| pModuleId | UINT_PTR* | out | クラスを含むモジュールの識別子を受け取るポインタである。 |
| pTypeDefToken | DWORD* | out | クラスの TypeDef メタデータトークンを受け取る DWORD へのポインタである。 |
vtbl 15 HRESULT GetFunctionInfo(UINT_PTR functionId, UINT_PTR* pClassId, UINT_PTR* pModuleId, DWORD* pToken)
| functionId | UINT_PTR | in | 情報を取得する対象の関数の識別子である。 |
| pClassId | UINT_PTR* | out | 関数が属するクラスの識別子を受け取るポインタである。 |
| pModuleId | UINT_PTR* | out | 関数を含むモジュールの識別子を受け取るポインタである。 |
| pToken | DWORD* | out | 関数のメタデータトークンを受け取る DWORD へのポインタである。 |
| dwEvents | DWORD | in | プロファイラが受け取るイベント通知を指定する COR_PRF_MONITOR フラグの DWORD である。 |
vtbl 17 HRESULT SetEnterLeaveFunctionHooks(FunctionEnter* pFuncEnter, FunctionLeave* pFuncLeave, FunctionTailcall* pFuncTailcall)
| pFuncEnter | FunctionEnter* | in | 関数の開始時に呼び出されるフック (FunctionEnter) へのポインタである。 |
| pFuncLeave | FunctionLeave* | in | 関数の終了時に呼び出されるフック (FunctionLeave) へのポインタである。 |
| pFuncTailcall | FunctionTailcall* | in | 末尾呼び出し時に呼び出されるフック (FunctionTailcall) へのポインタである。 |
vtbl 18 HRESULT SetFunctionIDMapper(FunctionIDMapper* pFunc)
| pFunc | FunctionIDMapper* | in | FunctionID を代替 ID に対応付けるためのマッパー関数 (FunctionIDMapper) へのポインタである。 |
vtbl 19 HRESULT GetTokenAndMetaDataFromFunction(UINT_PTR functionId, GUID* riid, IUnknown** ppImport, DWORD* pToken)
| functionId | UINT_PTR | in | メタデータを取得する対象の関数の識別子である。 |
| riid | GUID* | in | 要求するメタデータインターフェイスの IID を示す GUID へのポインタである。 |
| ppImport | IUnknown** | out | 要求されたメタデータインターフェイスを受け取る IUnknown ポインタである。 |
| pToken | DWORD* | out | 関数のメタデータトークンを受け取る DWORD へのポインタである。 |
vtbl 20 HRESULT GetModuleInfo(UINT_PTR moduleId, BYTE** ppBaseLoadAddress, DWORD cchName, DWORD* pcchName, LPWSTR szName, UINT_PTR* pAssemblyId)
| moduleId | UINT_PTR | in | 情報を取得する対象のモジュールの識別子である。 |
| ppBaseLoadAddress | BYTE** | out | モジュールのベースロードアドレスを受け取るバイトポインタへのポインタである。 |
| cchName | DWORD | in | szName バッファの文字数 (容量) である。 |
| pcchName | DWORD* | out | モジュール名の実際の文字数を受け取る DWORD へのポインタである。 |
| szName | LPWSTR | out | モジュールのファイル名を受け取る文字列バッファである。 |
| pAssemblyId | UINT_PTR* | out | モジュールが属するアセンブリの識別子を受け取るポインタである。 |
vtbl 21 HRESULT GetModuleMetaData(UINT_PTR moduleId, DWORD dwOpenFlags, GUID* riid, IUnknown** ppOut)
| moduleId | UINT_PTR | in | メタデータを取得する対象のモジュールの識別子である。 |
| dwOpenFlags | DWORD | in | メタデータを開く際の動作を指定する CorOpenFlags の DWORD である。 |
| riid | GUID* | in | 要求するメタデータインターフェイスの IID を示す GUID へのポインタである。 |
| ppOut | IUnknown** | out | 要求されたメタデータインターフェイスを受け取る IUnknown ポインタである。 |
vtbl 22 HRESULT GetILFunctionBody(UINT_PTR moduleId, DWORD methodId, BYTE** ppMethodHeader, DWORD* pcbMethodSize)
| moduleId | UINT_PTR | in | IL 本体を取得する対象のメソッドが属するモジュールの識別子である。 |
| methodId | DWORD | in | IL 本体を取得する対象メソッドのメタデータトークンである。 |
| ppMethodHeader | BYTE** | out | メソッドの IL ヘッダーの先頭を指すバイトポインタへのポインタである。 |
| pcbMethodSize | DWORD* | out | メソッドの IL 本体のバイト数を受け取る DWORD へのポインタである。 |
vtbl 23 HRESULT GetILFunctionBodyAllocator(UINT_PTR moduleId, IMethodMalloc** ppMalloc)
| moduleId | UINT_PTR | in | IL 本体の割り当てに使用するモジュールの識別子である。 |
| ppMalloc | IMethodMalloc** | out | IL 本体用メモリを確保するための IMethodMalloc インターフェイスを受け取るポインタである。 |
| moduleId | UINT_PTR | in | IL 本体を置き換える対象メソッドが属するモジュールの識別子である。 |
| methodid | DWORD | in | IL 本体を置き換える対象メソッドのメタデータトークンである。 |
| pbNewILMethodHeader | BYTE* | in | 新しい IL メソッド本体のヘッダーを指すバイトポインタである。 |
vtbl 25 HRESULT GetAppDomainInfo(UINT_PTR appDomainId, DWORD cchName, DWORD* pcchName, LPWSTR szName, UINT_PTR* pProcessId)
| appDomainId | UINT_PTR | in | 情報を取得する対象のアプリケーションドメインの識別子である。 |
| cchName | DWORD | in | szName バッファの文字数 (容量) である。 |
| pcchName | DWORD* | out | アプリケーションドメイン名の実際の文字数を受け取る DWORD へのポインタである。 |
| szName | LPWSTR | out | アプリケーションドメインの名前を受け取る文字列バッファである。 |
| pProcessId | UINT_PTR* | out | アプリケーションドメインを含むプロセスの識別子を受け取るポインタである。 |
vtbl 26 HRESULT GetAssemblyInfo(UINT_PTR assemblyId, DWORD cchName, DWORD* pcchName, LPWSTR szName, UINT_PTR* pAppDomainId, UINT_PTR* pModuleId)
| assemblyId | UINT_PTR | in | 情報を取得する対象のアセンブリの識別子である。 |
| cchName | DWORD | in | szName バッファの文字数 (容量) である。 |
| pcchName | DWORD* | out | アセンブリ名の実際の文字数を受け取る DWORD へのポインタである。 |
| szName | LPWSTR | out | アセンブリの名前を受け取る文字列バッファである。 |
| pAppDomainId | UINT_PTR* | out | アセンブリが属するアプリケーションドメインの識別子を受け取るポインタである。 |
| pModuleId | UINT_PTR* | out | アセンブリのマニフェストモジュールの識別子を受け取るポインタである。 |
| functionId | UINT_PTR | in | 再 JIT を要求する対象の関数の識別子である。 |
vtbl 28 HRESULT ForceGC()
vtbl 29 HRESULT SetILInstrumentedCodeMap(UINT_PTR functionId, BOOL fStartJit, DWORD cILMapEntries, COR_IL_MAP* rgILMapEntries)
| functionId | UINT_PTR | in | コードマップを設定する対象の関数の識別子である。 |
| fStartJit | BOOL | in | この呼び出しがマップ設定シーケンスの最初の呼び出しかどうかを示す BOOL である。 |
| cILMapEntries | DWORD | in | rgILMapEntries 配列の要素数である。 |
| rgILMapEntries | COR_IL_MAP* | in | 計測前後の IL オフセット対応を表す COR_IL_MAP エントリの配列へのポインタである。 |
| ppicd | IUnknown** | out | インプロセス検査用のデバッグインターフェイスを受け取る IUnknown ポインタである。 |
| ppicd | IUnknown** | out | 現在のスレッド向けのインプロセス検査用デバッグインターフェイスを受け取る IUnknown ポインタである。 |
| threadId | UINT_PTR | in | コンテキストを取得する対象のスレッドの識別子である。 |
| pContextId | UINT_PTR* | out | スレッドに現在関連付けられているコンテキストの識別子を受け取るポインタである。 |
| fThisThreadOnly | BOOL | in | デバッグを現在のスレッドのみに限定するかどうかを指定する BOOL である。 |
| pdwProfilerContext | DWORD* | out | このデバッグセッションを識別するコンテキスト値を受け取る DWORD へのポインタである。 |
| dwProfilerContext | DWORD | in | BeginInprocDebugging で取得したデバッグセッションのコンテキスト値である。 |
vtbl 35 HRESULT GetILToNativeMapping(UINT_PTR functionId, DWORD cMap, DWORD* pcMap, COR_DEBUG_IL_TO_NATIVE_MAP* map)
| functionId | UINT_PTR | in | IL とネイティブコードの対応を取得する対象の関数の識別子である。 |
| cMap | DWORD | in | map バッファに格納できるエントリ数 (容量) である。 |
| pcMap | DWORD* | out | 利用可能なマッピングエントリの実際の数を受け取る DWORD へのポインタである。 |
| map | COR_DEBUG_IL_TO_NATIVE_MAP* | out | IL オフセットとネイティブオフセットの対応を表す COR_DEBUG_IL_TO_NATIVE_MAP エントリを受け取る配列である。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ICorProfilerInfo "{28B5557D-3F3F-48B4-90B2-5F9EEA2F6C48}" #usecom global ICorProfilerInfo IID_ICorProfilerInfo "{}" #comfunc global ICorProfilerInfo_GetClassFromObject 3 sptr,var #comfunc global ICorProfilerInfo_GetClassFromToken 4 sptr,int,var #comfunc global ICorProfilerInfo_GetCodeInfo 5 sptr,var,var #comfunc global ICorProfilerInfo_GetEventMask 6 var #comfunc global ICorProfilerInfo_GetFunctionFromIP 7 var,var #comfunc global ICorProfilerInfo_GetFunctionFromToken 8 sptr,int,var #comfunc global ICorProfilerInfo_GetHandleFromThread 9 sptr,sptr #comfunc global ICorProfilerInfo_GetObjectSize 10 sptr,var #comfunc global ICorProfilerInfo_IsArrayClass 11 sptr,var,var,var #comfunc global ICorProfilerInfo_GetThreadInfo 12 sptr,var #comfunc global ICorProfilerInfo_GetCurrentThreadID 13 var #comfunc global ICorProfilerInfo_GetClassIDInfo 14 sptr,var,var #comfunc global ICorProfilerInfo_GetFunctionInfo 15 sptr,var,var,var #comfunc global ICorProfilerInfo_SetEventMask 16 int #comfunc global ICorProfilerInfo_SetEnterLeaveFunctionHooks 17 sptr,sptr,sptr #comfunc global ICorProfilerInfo_SetFunctionIDMapper 18 sptr #comfunc global ICorProfilerInfo_GetTokenAndMetaDataFromFunction 19 sptr,var,sptr,var #comfunc global ICorProfilerInfo_GetModuleInfo 20 sptr,var,int,var,var,var #comfunc global ICorProfilerInfo_GetModuleMetaData 21 sptr,int,var,sptr #comfunc global ICorProfilerInfo_GetILFunctionBody 22 sptr,int,var,var #comfunc global ICorProfilerInfo_GetILFunctionBodyAllocator 23 sptr,sptr #comfunc global ICorProfilerInfo_SetILFunctionBody 24 sptr,int,var #comfunc global ICorProfilerInfo_GetAppDomainInfo 25 sptr,int,var,var,var #comfunc global ICorProfilerInfo_GetAssemblyInfo 26 sptr,int,var,var,var,var #comfunc global ICorProfilerInfo_SetFunctionReJIT 27 sptr #comfunc global ICorProfilerInfo_ForceGC 28 #comfunc global ICorProfilerInfo_SetILInstrumentedCodeMap 29 sptr,int,int,var #comfunc global ICorProfilerInfo_GetInprocInspectionInterface 30 sptr #comfunc global ICorProfilerInfo_GetInprocInspectionIThisThread 31 sptr #comfunc global ICorProfilerInfo_GetThreadContext 32 sptr,var #comfunc global ICorProfilerInfo_BeginInprocDebugging 33 int,var #comfunc global ICorProfilerInfo_EndInprocDebugging 34 int #comfunc global ICorProfilerInfo_GetILToNativeMapping 35 sptr,int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICorProfilerInfo "{28B5557D-3F3F-48B4-90B2-5F9EEA2F6C48}" #usecom global ICorProfilerInfo IID_ICorProfilerInfo "{}" #comfunc global ICorProfilerInfo_GetClassFromObject 3 sptr,sptr #comfunc global ICorProfilerInfo_GetClassFromToken 4 sptr,int,sptr #comfunc global ICorProfilerInfo_GetCodeInfo 5 sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetEventMask 6 sptr #comfunc global ICorProfilerInfo_GetFunctionFromIP 7 sptr,sptr #comfunc global ICorProfilerInfo_GetFunctionFromToken 8 sptr,int,sptr #comfunc global ICorProfilerInfo_GetHandleFromThread 9 sptr,sptr #comfunc global ICorProfilerInfo_GetObjectSize 10 sptr,sptr #comfunc global ICorProfilerInfo_IsArrayClass 11 sptr,sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetThreadInfo 12 sptr,sptr #comfunc global ICorProfilerInfo_GetCurrentThreadID 13 sptr #comfunc global ICorProfilerInfo_GetClassIDInfo 14 sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetFunctionInfo 15 sptr,sptr,sptr,sptr #comfunc global ICorProfilerInfo_SetEventMask 16 int #comfunc global ICorProfilerInfo_SetEnterLeaveFunctionHooks 17 sptr,sptr,sptr #comfunc global ICorProfilerInfo_SetFunctionIDMapper 18 sptr #comfunc global ICorProfilerInfo_GetTokenAndMetaDataFromFunction 19 sptr,sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetModuleInfo 20 sptr,sptr,int,sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetModuleMetaData 21 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo_GetILFunctionBody 22 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo_GetILFunctionBodyAllocator 23 sptr,sptr #comfunc global ICorProfilerInfo_SetILFunctionBody 24 sptr,int,sptr #comfunc global ICorProfilerInfo_GetAppDomainInfo 25 sptr,int,sptr,sptr,sptr #comfunc global ICorProfilerInfo_GetAssemblyInfo 26 sptr,int,sptr,sptr,sptr,sptr #comfunc global ICorProfilerInfo_SetFunctionReJIT 27 sptr #comfunc global ICorProfilerInfo_ForceGC 28 #comfunc global ICorProfilerInfo_SetILInstrumentedCodeMap 29 sptr,int,int,sptr #comfunc global ICorProfilerInfo_GetInprocInspectionInterface 30 sptr #comfunc global ICorProfilerInfo_GetInprocInspectionIThisThread 31 sptr #comfunc global ICorProfilerInfo_GetThreadContext 32 sptr,sptr #comfunc global ICorProfilerInfo_BeginInprocDebugging 33 int,sptr #comfunc global ICorProfilerInfo_EndInprocDebugging 34 int #comfunc global ICorProfilerInfo_GetILToNativeMapping 35 sptr,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。