ホーム › System.Diagnostics.ClrProfiling › ICorProfilerInfo2
ICorProfilerInfo2
COMメソッド 21
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 36 HRESULT DoStackSnapshot(UINT_PTR thread, StackSnapshotCallback* callback, DWORD infoFlags, void* clientData, BYTE* context, DWORD contextSize)
| thread | UINT_PTR | in | スタックを走査する対象のスレッドの識別子である。0 を指定すると現在のスレッドを対象とする。 |
| callback | StackSnapshotCallback* | in | 各スタックフレームごとに呼び出される StackSnapshotCallback 関数へのポインタである。 |
| infoFlags | DWORD | in | スタックスナップショットの動作を制御する COR_PRF_SNAPSHOT_INFO フラグの DWORD である。 |
| clientData | void* | in | コールバックにそのまま渡されるユーザー定義データを指すポインタである。 |
| context | BYTE* | in | 走査の起点となるレジスタコンテキストを格納したバッファへのポインタである。 |
| contextSize | DWORD | in | context バッファのバイト数である。 |
vtbl 37 HRESULT SetEnterLeaveFunctionHooks2(FunctionEnter2* pFuncEnter, FunctionLeave2* pFuncLeave, FunctionTailcall2* pFuncTailcall)
| pFuncEnter | FunctionEnter2* | in | 関数の開始時に呼び出されるフック (FunctionEnter2) へのポインタである。 |
| pFuncLeave | FunctionLeave2* | in | 関数の終了時に呼び出されるフック (FunctionLeave2) へのポインタである。 |
| pFuncTailcall | FunctionTailcall2* | in | 末尾呼び出し時に呼び出されるフック (FunctionTailcall2) へのポインタである。 |
vtbl 38 HRESULT GetFunctionInfo2(UINT_PTR funcId, UINT_PTR frameInfo, UINT_PTR* pClassId, UINT_PTR* pModuleId, DWORD* pToken, DWORD cTypeArgs, DWORD* pcTypeArgs, UINT_PTR* typeArgs)
| funcId | UINT_PTR | in | 情報を取得する対象の関数の識別子である。 |
| frameInfo | UINT_PTR | in | ジェネリック型引数を解決するためのフレーム情報である。 |
| pClassId | UINT_PTR* | out | 関数が属するクラスの識別子を受け取るポインタである。 |
| pModuleId | UINT_PTR* | out | 関数を含むモジュールの識別子を受け取るポインタである。 |
| pToken | DWORD* | out | 関数のメタデータトークンを受け取る DWORD へのポインタである。 |
| cTypeArgs | DWORD | in | typeArgs バッファに格納できる型引数の数 (容量) である。 |
| pcTypeArgs | DWORD* | out | 関数の型引数の実際の数を受け取る DWORD へのポインタである。 |
| typeArgs | UINT_PTR* | out | 関数のジェネリック型引数のクラス識別子を受け取る配列である。 |
vtbl 39 HRESULT GetStringLayout(DWORD* pBufferLengthOffset, DWORD* pStringLengthOffset, DWORD* pBufferOffset)
| pBufferLengthOffset | DWORD* | out | 文字列オブジェクト内のバッファ長フィールドのオフセットを受け取る DWORD へのポインタである。 |
| pStringLengthOffset | DWORD* | out | 文字列オブジェクト内の文字列長フィールドのオフセットを受け取る DWORD へのポインタである。 |
| pBufferOffset | DWORD* | out | 文字列オブジェクト内の文字バッファのオフセットを受け取る DWORD へのポインタである。 |
vtbl 40 HRESULT GetClassLayout(UINT_PTR classID, COR_FIELD_OFFSET* rFieldOffset, DWORD cFieldOffset, DWORD* pcFieldOffset, DWORD* pulClassSize)
| classID | UINT_PTR | in | レイアウトを取得する対象のクラスの識別子である。 |
| rFieldOffset | COR_FIELD_OFFSET* | inout | 各フィールドのオフセット情報を受け取る COR_FIELD_OFFSET 配列である。 |
| cFieldOffset | DWORD | in | rFieldOffset バッファに格納できるフィールド数 (容量) である。 |
| pcFieldOffset | DWORD* | out | クラスのフィールドの実際の数を受け取る DWORD へのポインタである。 |
| pulClassSize | DWORD* | out | クラスインスタンスのサイズ (バイト数) を受け取る DWORD へのポインタである。 |
vtbl 41 HRESULT GetClassIDInfo2(UINT_PTR classId, UINT_PTR* pModuleId, DWORD* pTypeDefToken, UINT_PTR* pParentClassId, DWORD cNumTypeArgs, DWORD* pcNumTypeArgs, UINT_PTR* typeArgs)
| classId | UINT_PTR | in | 情報を取得する対象のクラスの識別子である。 |
| pModuleId | UINT_PTR* | out | クラスを含むモジュールの識別子を受け取るポインタである。 |
| pTypeDefToken | DWORD* | out | クラスの TypeDef メタデータトークンを受け取る DWORD へのポインタである。 |
| pParentClassId | UINT_PTR* | out | クラスの基底クラスの識別子を受け取るポインタである。 |
| cNumTypeArgs | DWORD | in | typeArgs バッファに格納できる型引数の数 (容量) である。 |
| pcNumTypeArgs | DWORD* | out | クラスの型引数の実際の数を受け取る DWORD へのポインタである。 |
| typeArgs | UINT_PTR* | out | クラスのジェネリック型引数のクラス識別子を受け取る配列である。 |
vtbl 42 HRESULT GetCodeInfo2(UINT_PTR functionID, DWORD cCodeInfos, DWORD* pcCodeInfos, COR_PRF_CODE_INFO* codeInfos)
| functionID | UINT_PTR | in | ネイティブコード情報を取得する対象の関数の識別子である。 |
| cCodeInfos | DWORD | in | codeInfos バッファに格納できるコードブロック数 (容量) である。 |
| pcCodeInfos | DWORD* | out | 関数のコードブロックの実際の数を受け取る DWORD へのポインタである。 |
| codeInfos | COR_PRF_CODE_INFO* | out | 関数のネイティブコードブロックの情報を受け取る COR_PRF_CODE_INFO 配列である。 |
vtbl 43 HRESULT GetClassFromTokenAndTypeArgs(UINT_PTR moduleID, DWORD typeDef, DWORD cTypeArgs, UINT_PTR* typeArgs, UINT_PTR* pClassID)
| moduleID | UINT_PTR | in | 型を含むモジュールの識別子である。 |
| typeDef | DWORD | in | クラスを表す TypeDef メタデータトークンである。 |
| cTypeArgs | DWORD | in | typeArgs 配列に含まれる型引数の数である。 |
| typeArgs | UINT_PTR* | in | 構築するジェネリッククラスの型引数のクラス識別子を格納した配列である。 |
| pClassID | UINT_PTR* | out | 構築されたクラスの識別子を受け取るポインタである。 |
vtbl 44 HRESULT GetFunctionFromTokenAndTypeArgs(UINT_PTR moduleID, DWORD funcDef, UINT_PTR classId, DWORD cTypeArgs, UINT_PTR* typeArgs, UINT_PTR* pFunctionID)
| moduleID | UINT_PTR | in | 関数を含むモジュールの識別子である。 |
| funcDef | DWORD | in | 関数を表す MethodDef メタデータトークンである。 |
| classId | UINT_PTR | in | 関数が属するクラスの識別子である。 |
| cTypeArgs | DWORD | in | typeArgs 配列に含まれる型引数の数である。 |
| typeArgs | UINT_PTR* | in | 構築するジェネリック関数の型引数のクラス識別子を格納した配列である。 |
| pFunctionID | UINT_PTR* | out | 構築された関数の識別子を受け取るポインタである。 |
vtbl 45 HRESULT EnumModuleFrozenObjects(UINT_PTR moduleID, ICorProfilerObjectEnum** ppEnum)
| moduleID | UINT_PTR | in | 凍結オブジェクトを列挙する対象のモジュールの識別子である。 |
| ppEnum | ICorProfilerObjectEnum** | out | モジュール内の凍結オブジェクトを列挙する ICorProfilerObjectEnum インターフェイスを受け取るポインタである。 |
vtbl 46 HRESULT GetArrayObjectInfo(UINT_PTR objectId, DWORD cDimensions, DWORD* pDimensionSizes, INT* pDimensionLowerBounds, BYTE** ppData)
| objectId | UINT_PTR | in | 情報を取得する対象の配列オブジェクトの識別子である。 |
| cDimensions | DWORD | in | 配列の次元数である。 |
| pDimensionSizes | DWORD* | out | 各次元の要素数を受け取る DWORD 配列へのポインタである。 |
| pDimensionLowerBounds | INT* | out | 各次元の下限を受け取る整数配列へのポインタである。 |
| ppData | BYTE** | out | 配列要素データの先頭を指すバイトポインタを受け取るポインタである。 |
| classId | UINT_PTR | in | ボックス化レイアウトを取得する対象の値型クラスの識別子である。 |
| pBufferOffset | DWORD* | out | ボックス化オブジェクト内の値データのオフセットを受け取る DWORD へのポインタである。 |
| threadId | UINT_PTR | in | アプリケーションドメインを取得する対象のスレッドの識別子である。 |
| pAppDomainId | UINT_PTR* | out | スレッドが現在実行されているアプリケーションドメインの識別子を受け取るポインタである。 |
| classId | UINT_PTR | in | 静的フィールドを含むクラスの識別子である。 |
| fieldToken | DWORD | in | 対象の静的フィールドのメタデータトークンである。 |
| ppAddress | void** | out | RVA 静的フィールドのアドレスを受け取るポインタである。 |
vtbl 50 HRESULT GetAppDomainStaticAddress(UINT_PTR classId, DWORD fieldToken, UINT_PTR appDomainId, void** ppAddress)
| classId | UINT_PTR | in | 静的フィールドを含むクラスの識別子である。 |
| fieldToken | DWORD | in | 対象の静的フィールドのメタデータトークンである。 |
| appDomainId | UINT_PTR | in | アドレスを取得する対象のアプリケーションドメインの識別子である。 |
| ppAddress | void** | out | 指定アプリケーションドメインにおける静的フィールドのアドレスを受け取るポインタである。 |
vtbl 51 HRESULT GetThreadStaticAddress(UINT_PTR classId, DWORD fieldToken, UINT_PTR threadId, void** ppAddress)
| classId | UINT_PTR | in | 静的フィールドを含むクラスの識別子である。 |
| fieldToken | DWORD | in | 対象のスレッド静的フィールドのメタデータトークンである。 |
| threadId | UINT_PTR | in | アドレスを取得する対象のスレッドの識別子である。 |
| ppAddress | void** | out | 指定スレッドにおけるスレッド静的フィールドのアドレスを受け取るポインタである。 |
vtbl 52 HRESULT GetContextStaticAddress(UINT_PTR classId, DWORD fieldToken, UINT_PTR contextId, void** ppAddress)
| classId | UINT_PTR | in | 静的フィールドを含むクラスの識別子である。 |
| fieldToken | DWORD | in | 対象のコンテキスト静的フィールドのメタデータトークンである。 |
| contextId | UINT_PTR | in | アドレスを取得する対象のコンテキストの識別子である。 |
| ppAddress | void** | out | 指定コンテキストにおけるコンテキスト静的フィールドのアドレスを受け取るポインタである。 |
vtbl 53 HRESULT GetStaticFieldInfo(UINT_PTR classId, DWORD fieldToken, COR_PRF_STATIC_TYPE* pFieldInfo)
| classId | UINT_PTR | in | 静的フィールドを含むクラスの識別子である。 |
| fieldToken | DWORD | in | 対象の静的フィールドのメタデータトークンである。 |
| pFieldInfo | COR_PRF_STATIC_TYPE* | out | 静的フィールドの種類を示す COR_PRF_STATIC_TYPE を受け取るポインタである。 |
vtbl 54 HRESULT GetGenerationBounds(DWORD cObjectRanges, DWORD* pcObjectRanges, COR_PRF_GC_GENERATION_RANGE* ranges)
| cObjectRanges | DWORD | in | ranges バッファに格納できる世代範囲の数 (容量) である。 |
| pcObjectRanges | DWORD* | out | 世代範囲の実際の数を受け取る DWORD へのポインタである。 |
| ranges | COR_PRF_GC_GENERATION_RANGE* | out | 各 GC 世代のメモリ範囲を受け取る COR_PRF_GC_GENERATION_RANGE 配列である。 |
vtbl 55 HRESULT GetObjectGeneration(UINT_PTR objectId, COR_PRF_GC_GENERATION_RANGE* range)
| objectId | UINT_PTR | in | 世代を取得する対象のオブジェクトの識別子である。 |
| range | COR_PRF_GC_GENERATION_RANGE* | out | オブジェクトが属する世代範囲の情報を受け取る COR_PRF_GC_GENERATION_RANGE へのポインタである。 |
vtbl 56 HRESULT GetNotifiedExceptionClauseInfo(COR_PRF_EX_CLAUSE_INFO* pinfo)
| pinfo | COR_PRF_EX_CLAUSE_INFO* | out | 現在通知中の例外句に関する情報を受け取る COR_PRF_EX_CLAUSE_INFO へのポインタである。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_ICorProfilerInfo2 "{CC0935CD-A518-487D-B0BB-A93214E65478}" #usecom global ICorProfilerInfo2 IID_ICorProfilerInfo2 "{}" #comfunc global ICorProfilerInfo2_DoStackSnapshot 36 sptr,sptr,int,sptr,var,int #comfunc global ICorProfilerInfo2_SetEnterLeaveFunctionHooks2 37 sptr,sptr,sptr #comfunc global ICorProfilerInfo2_GetFunctionInfo2 38 sptr,sptr,var,var,var,int,var,var #comfunc global ICorProfilerInfo2_GetStringLayout 39 var,var,var #comfunc global ICorProfilerInfo2_GetClassLayout 40 sptr,var,int,var,var #comfunc global ICorProfilerInfo2_GetClassIDInfo2 41 sptr,var,var,var,int,var,var #comfunc global ICorProfilerInfo2_GetCodeInfo2 42 sptr,int,var,var #comfunc global ICorProfilerInfo2_GetClassFromTokenAndTypeArgs 43 sptr,int,int,var,var #comfunc global ICorProfilerInfo2_GetFunctionFromTokenAndTypeArgs 44 sptr,int,sptr,int,var,var #comfunc global ICorProfilerInfo2_EnumModuleFrozenObjects 45 sptr,sptr #comfunc global ICorProfilerInfo2_GetArrayObjectInfo 46 sptr,int,var,var,var #comfunc global ICorProfilerInfo2_GetBoxClassLayout 47 sptr,var #comfunc global ICorProfilerInfo2_GetThreadAppDomain 48 sptr,var #comfunc global ICorProfilerInfo2_GetRVAStaticAddress 49 sptr,int,sptr #comfunc global ICorProfilerInfo2_GetAppDomainStaticAddress 50 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetThreadStaticAddress 51 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetContextStaticAddress 52 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetStaticFieldInfo 53 sptr,int,var #comfunc global ICorProfilerInfo2_GetGenerationBounds 54 int,var,var #comfunc global ICorProfilerInfo2_GetObjectGeneration 55 sptr,var #comfunc global ICorProfilerInfo2_GetNotifiedExceptionClauseInfo 56 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICorProfilerInfo2 "{CC0935CD-A518-487D-B0BB-A93214E65478}" #usecom global ICorProfilerInfo2 IID_ICorProfilerInfo2 "{}" #comfunc global ICorProfilerInfo2_DoStackSnapshot 36 sptr,sptr,int,sptr,sptr,int #comfunc global ICorProfilerInfo2_SetEnterLeaveFunctionHooks2 37 sptr,sptr,sptr #comfunc global ICorProfilerInfo2_GetFunctionInfo2 38 sptr,sptr,sptr,sptr,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetStringLayout 39 sptr,sptr,sptr #comfunc global ICorProfilerInfo2_GetClassLayout 40 sptr,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetClassIDInfo2 41 sptr,sptr,sptr,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetCodeInfo2 42 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetClassFromTokenAndTypeArgs 43 sptr,int,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetFunctionFromTokenAndTypeArgs 44 sptr,int,sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_EnumModuleFrozenObjects 45 sptr,sptr #comfunc global ICorProfilerInfo2_GetArrayObjectInfo 46 sptr,int,sptr,sptr,sptr #comfunc global ICorProfilerInfo2_GetBoxClassLayout 47 sptr,sptr #comfunc global ICorProfilerInfo2_GetThreadAppDomain 48 sptr,sptr #comfunc global ICorProfilerInfo2_GetRVAStaticAddress 49 sptr,int,sptr #comfunc global ICorProfilerInfo2_GetAppDomainStaticAddress 50 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetThreadStaticAddress 51 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetContextStaticAddress 52 sptr,int,sptr,sptr #comfunc global ICorProfilerInfo2_GetStaticFieldInfo 53 sptr,int,sptr #comfunc global ICorProfilerInfo2_GetGenerationBounds 54 int,sptr,sptr #comfunc global ICorProfilerInfo2_GetObjectGeneration 55 sptr,sptr #comfunc global ICorProfilerInfo2_GetNotifiedExceptionClauseInfo 56 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。