更新 : 2007 年 11 月
コード プロファイラが共通言語ランタイム (CLR: Common Language Runtime) とやり取りして、イベント監視および要求情報を制御するために使用する各種メソッドを提供します。
![]() |
---|
ICorProfilerInfo インターフェイスの各メソッドが、成功または失敗を示す HRESULT を返します。使用できるリターン コードの一覧については、CorError.h を参照してください。 |
interface ICorProfilerInfo : IUnknown
{
HRESULT GetClassFromObject(
[in] ObjectID objectId,
[out] ClassID *pClassId);
HRESULT GetClassFromToken(
[in] ModuleID moduleId,
[in] mdTypeDef typeDef,
[out] ClassID *pClassId);
HRESULT GetCodeInfo(
[in] FunctionID functionId,
[out] LPCBYTE *pStart,
[out] ULONG *pcSize);
HRESULT GetEventMask(
[out] DWORD *pdwEvents);
HRESULT GetFunctionFromIP(
[in] LPCBYTE ip,
[out] FunctionID *pFunctionId);
HRESULT GetFunctionFromToken(
[in] ModuleID moduleId,
[in] mdToken token,
[out] FunctionID *pFunctionId);
HRESULT GetHandleFromThread(
[in] ThreadID threadId,
[out] HANDLE *phThread);
HRESULT GetObjectSize(
[in] ObjectID objectId,
[out] ULONG *pcSize);
HRESULT IsArrayClass(
[in] ClassID classId,
[out] CorElementType *pBaseElemType,
[out] ClassID *pBaseClassId,
[out] ULONG *pcRank);
HRESULT GetThreadInfo(
[in] ThreadID threadId,
[out] DWORD *pdwWin32ThreadId);
HRESULT GetCurrentThreadID(
[out] ThreadID *pThreadId);
HRESULT GetClassIDInfo(
[in] ClassID classId,
[out] ModuleID *pModuleId,
[out] mdTypeDef *pTypeDefToken);
HRESULT GetFunctionInfo(
[in] FunctionID functionId,
[out] ClassID *pClassId,
[out] ModuleID *pModuleId,
[out] mdToken *pToken);
HRESULT SetEventMask(
[in] DWORD dwEvents);
HRESULT SetEnterLeaveFunctionHooks(
[in] FunctionEnter *pFuncEnter,
[in] FunctionLeave *pFuncLeave,
[in] FunctionTailcall *pFuncTailcall);
HRESULT SetFunctionIDMapper(
[in] FunctionIDMapper *pFunc);
HRESULT GetTokenAndMetaDataFromFunction(
[in] FunctionID functionId,
[in] REFIID riid,
[out] IUnknown **ppImport,
[out] mdToken *pToken);
HRESULT GetModuleInfo(
[in] ModuleID moduleId,
[out] LPCBYTE *ppBaseLoadAddress,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AssemblyID *pAssemblyId);
HRESULT GetModuleMetaData(
[in] ModuleID moduleId,
[in] DWORD dwOpenFlags,
[in] REFIID riid,
[out] IUnknown **ppOut);
HRESULT GetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodId,
[out] LPCBYTE *ppMethodHeader,
[out] ULONG *pcbMethodSize);
HRESULT GetILFunctionBodyAllocator(
[in] ModuleID moduleId,
[out] IMethodMalloc **ppMalloc);
HRESULT SetILFunctionBody(
[in] ModuleID moduleId,
[in] mdMethodDef methodid,
[in] LPCBYTE pbNewILMethodHeader);
HRESULT GetAppDomainInfo(
[in] AppDomainID appDomainId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] ProcessID *pProcessId);
HRESULT GetAssemblyInfo(
[in] AssemblyID assemblyId,
[in] ULONG cchName,
[out] ULONG *pcchName,
[out, size_is(cchName), length_is(*pcchName)]
WCHAR szName[] ,
[out] AppDomainID *pAppDomainId,
[out] ModuleID *pModuleId);
HRESULT SetFunctionReJIT(
[in] FunctionID functionId);
HRESULT ForceGC();
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[] );
HRESULT GetInprocInspectionInterface(
[out] IUnknown **ppicd);
HRESULT GetInprocInspectionIThisThread(
[out] IUnknown **ppicd);
HRESULT GetThreadContext(
[in] ThreadID threadId,
[out] ContextID *pContextId);
HRESULT BeginInprocDebugging(
[in] BOOL fThisThreadOnly,
[out] DWORD *pdwProfilerContext);
HRESULT EndInprocDebugging(
[in] DWORD dwProfilerContext);
HRESULT GetILToNativeMapping(
[in] FunctionID functionId,
[in] ULONG32 cMap,
[out] ULONG32 *pcMap,
[out, size_is(cMap), length_is(*pcMap)]
COR_DEBUG_IL_TO_NATIVE_MAP map[]);
}
メソッド
メソッド |
説明 |
---|---|
サポートのインプロセス デバッグを初期化します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。 |
|
インプロセス デバッグ セッションをシャットダウンします。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。 |
|
ランタイム内で強制的にガベージ コレクションを実行します。 |
|
指定したアプリケーション ドメインの情報を取得します。 |
|
指定したアセンブリの情報を取得します。 |
|
ObjectID を指定したオブジェクトの ClassID を取得します。 ■訳文不要■ |
|
指定したメタデータ トークンのクラスの ID を取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。代わりに ICorProfilerInfo2::GetClassFromTokenAndTypeArgs メソッドを使用してください。 |
|
指定したクラスの親モジュールおよびメタデータ トークンを取得します。 |
|
指定した関数 ID に関連付けられているネイティブ コードの範囲を取得します。このメソッドは、互換性のために残されています。代わりに ICorProfilerInfo2::GetCodeInfo2 メソッドを使用してください。 |
|
現在のスレッドがマネージ スレッドの場合、その ID を取得します。 |
|
プロファイラが CLR からイベント通知を受け取る現在のイベント カテゴリを取得します。 |
|
マネージ コードの命令ポインタを FunctionID にマップします。 |
|
関数の ID を取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。代わりに ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs メソッドを使用してください。 |
|
指定した関数の親クラスおよびメタデータ トークンを取得します。 |
|
スレッドの ID を Win32 スレッド ハンドルに対応付けます。 |
|
Microsoft Intermediate Language (MSIL) コード内の、ヘッダー位置から始まるメソッド本体へのポインタを取得します。 |
|
MSIL コード内のメソッド本体のスワップに使用するメモリを割り当てるメソッドを提供するインターフェイスを取得します。 |
|
指定した関数に含まれているコードの MSIL オフセットからネイティブ オフセットへの対応付けを取得します。 |
|
ICorDebugProcess インターフェイスに対して照会できるオブジェクトを取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。 |
|
ICorDebugThread インターフェイスに対して照会できるオブジェクトを取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。 |
|
指定したモジュールの情報を取得します。 |
|
指定したモジュールに割り当てられるメタデータ インターフェイス インスタンスを取得します。 |
|
指定したオブジェクトのサイズを取得します。 |
|
指定したスレッドに現在関連付けられているコンテキスト ID を取得します。 |
|
指定したスレッドの現在の Win32 スレッド識別子を取得します。 |
|
指定した関数のトークンに対して使用できるメタデータ トークンおよびメタデータ インターフェイスのインスタンスを取得します。 |
|
指定したクラスが配列クラスかどうかを判断します。 |
|
マネージ関数の "enter"、"leave"、および "tailcall" フックで呼び出すプロファイラ実装関数を指定します。 |
|
プロファイラが CLR から通知を受け取るイベントの種類を指定する値を設定します。 |
|
FunctionID 値を代替値に対応付けるために呼び出すプロファイラ実装関数を指定します。これにより、プロファイラの関数の開始/終了フックに値が渡されます。 |
|
実装されていません。使用しないでください。 |
|
指定したモジュール内の指定した関数の本体を置き換えます。 |
|
指定した関数の元の MSIL のオフセットを、その関数のプロファイラで変更された MSIL の新しいオフセットに対応付ける方法を指定します。 |
解説
プロファイラは ICorProfilerInfo インターフェイスのメソッドを呼び出し、CLR とやり取りしてイベント監視および要求情報を制御します。
ICorProfilerInfo インターフェイスのメソッドは、フリー スレッド モデルを使用して CLR によって実装されます。各メソッドが、成功または失敗を示す HRESULT を返します。使用できるリターン コードの一覧については、CorError.h を参照してください。
CLR は、プロファイラの ICorProfilerCallback::Initialize の実装を使用して、初期化中に ICorProfilerInfo インターフェイスを各コード プロファイラに渡します。次に、コード プロファイラが ICorProfilerInfo インターフェイスのメソッドを呼び出して、CLR が実行しているマネージ コードの情報を取得できます。
必要条件
プラットフォーム : 「.NET Framework システム要件」を参照
ヘッダー : CorProf.idl
ライブラリ : CorGuids.lib
.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0