次の方法で共有


ICorProfilerInfo

更新 : 2007 年 11 月

コード プロファイラが共通言語ランタイム (CLR: Common Language Runtime) とやり取りして、イベント監視および要求情報を制御するために使用する各種メソッドを提供します。

ms233177.alert_note(ja-jp,VS.90).gifメモ :

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[]);
}

メソッド

メソッド

説明

ICorProfilerInfo::BeginInprocDebugging メソッド

サポートのインプロセス デバッグを初期化します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。

ICorProfilerInfo::EndInprocDebugging メソッド

インプロセス デバッグ セッションをシャットダウンします。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。

ICorProfilerInfo::ForceGC メソッド

ランタイム内で強制的にガベージ コレクションを実行します。

ICorProfilerInfo::GetAppDomainInfo メソッド

指定したアプリケーション ドメインの情報を取得します。

ICorProfilerInfo::GetAssemblyInfo メソッド

指定したアセンブリの情報を取得します。

ICorProfilerInfo::GetClassFromObject メソッド

ObjectID を指定したオブジェクトの ClassID を取得します。

■訳文不要■

ICorProfilerInfo::GetClassFromToken メソッド

指定したメタデータ トークンのクラスの ID を取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。代わりに ICorProfilerInfo2::GetClassFromTokenAndTypeArgs メソッドを使用してください。

ICorProfilerInfo::GetClassIDInfo メソッド

指定したクラスの親モジュールおよびメタデータ トークンを取得します。

ICorProfilerInfo::GetCodeInfo メソッド

指定した関数 ID に関連付けられているネイティブ コードの範囲を取得します。このメソッドは、互換性のために残されています。代わりに ICorProfilerInfo2::GetCodeInfo2 メソッドを使用してください。

ICorProfilerInfo::GetCurrentThreadID メソッド

現在のスレッドがマネージ スレッドの場合、その ID を取得します。

ICorProfilerInfo::GetEventMask メソッド

プロファイラが CLR からイベント通知を受け取る現在のイベント カテゴリを取得します。

ICorProfilerInfo::GetFunctionFromIP メソッド

マネージ コードの命令ポインタを FunctionID にマップします。

ICorProfilerInfo::GetFunctionFromToken メソッド

関数の ID を取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。代わりに ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs メソッドを使用してください。

ICorProfilerInfo::GetFunctionInfo メソッド

指定した関数の親クラスおよびメタデータ トークンを取得します。

ICorProfilerInfo::GetHandleFromThread メソッド

スレッドの ID を Win32 スレッド ハンドルに対応付けます。

ICorProfilerInfo::GetILFunctionBody メソッド

Microsoft Intermediate Language (MSIL) コード内の、ヘッダー位置から始まるメソッド本体へのポインタを取得します。

ICorProfilerInfo::GetILFunctionBodyAllocator メソッド

MSIL コード内のメソッド本体のスワップに使用するメモリを割り当てるメソッドを提供するインターフェイスを取得します。

ICorProfilerInfo::GetILToNativeMapping メソッド

指定した関数に含まれているコードの MSIL オフセットからネイティブ オフセットへの対応付けを取得します。

ICorProfilerInfo::GetInprocInspectionInterface メソッド

ICorDebugProcess インターフェイスに対して照会できるオブジェクトを取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。

ICorProfilerInfo::GetInprocInspectionIThisThread メソッド

ICorDebugThread インターフェイスに対して照会できるオブジェクトを取得します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。

ICorProfilerInfo::GetModuleInfo メソッド

指定したモジュールの情報を取得します。

ICorProfilerInfo::GetModuleMetaData メソッド

指定したモジュールに割り当てられるメタデータ インターフェイス インスタンスを取得します。

ICorProfilerInfo::GetObjectSize メソッド

指定したオブジェクトのサイズを取得します。

ICorProfilerInfo::GetThreadContext メソッド

指定したスレッドに現在関連付けられているコンテキスト ID を取得します。

ICorProfilerInfo::GetThreadInfo メソッド

指定したスレッドの現在の Win32 スレッド識別子を取得します。

ICorProfilerInfo::GetTokenAndMetadataFromFunction メソッド

指定した関数のトークンに対して使用できるメタデータ トークンおよびメタデータ インターフェイスのインスタンスを取得します。

ICorProfilerInfo::IsArrayClass メソッド

指定したクラスが配列クラスかどうかを判断します。

ICorProfilerInfo::SetEnterLeaveFunctionHooks メソッド

マネージ関数の "enter"、"leave"、および "tailcall" フックで呼び出すプロファイラ実装関数を指定します。

ICorProfilerInfo::SetEventMask メソッド

プロファイラが CLR から通知を受け取るイベントの種類を指定する値を設定します。

ICorProfilerInfo::SetFunctionIDMapper メソッド

FunctionID 値を代替値に対応付けるために呼び出すプロファイラ実装関数を指定します。これにより、プロファイラの関数の開始/終了フックに値が渡されます。

ICorProfilerInfo::SetFunctionReJIT メソッド

実装されていません。使用しないでください。

ICorProfilerInfo::SetILFunctionBody メソッド

指定したモジュール内の指定した関数の本体を置き換えます。

ICorProfilerInfo::SetILInstrumentedCodeMap メソッド

指定した関数の元の 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

参照

参照

ICorProfilerInfo2

その他の技術情報

プロファイリングのインターフェイス