次の方法で共有


ICorProfilerInfo2

更新 : 2007 年 11 月

コード プロファイラが共通言語ランタイム (CLR: Common Language Runtime) とやり取りして、イベント監視および要求情報を制御するために使用する各種メソッドを提供します。ICorProfilerInfo2 インターフェイスは、ICorProfilerInfo の機能を拡張するインターフェイスです。つまり、.NET Framework Version 2.0 以降でサポートされている新しいメソッドを提供します。

interface ICorProfilerInfo2 : ICorProfilerInfo
{
    HRESULT DoStackSnapshot(
        [in] ThreadID thread,
        [in] StackSnapshotCallback *callback,
        [in] ULONG32 infoFlags,
        [in] void *clientData,
        [in, size_is(contextSize), length_is(contextSize)] BYTE context[],
        [in] ULONG32 contextSize);

    HRESULT SetEnterLeaveFunctionHooks2(
        [in] FunctionEnter2    *pFuncEnter,
        [in] FunctionLeave2    *pFuncLeave,
        [in] FunctionTailcall2 *pFuncTailcall);

    HRESULT GetFunctionInfo2(
        [in] FunctionID funcId,
        [in] COR_PRF_FRAME_INFO frameInfo,
        [out] ClassID *pClassId,
        [out] ModuleID *pModuleId,
        [out] mdToken *pToken,
        [in] ULONG32 cTypeArgs,
        [out] ULONG32 *pcTypeArgs,
        [out] ClassID typeArgs[]);

    HRESULT GetStringLayout(
        [out] ULONG *pBufferLengthOffset,
        [out] ULONG *pStringLengthOffset,
        [out] ULONG *pBufferOffset);

    HRESULT GetClassLayout(
        [in]  ClassID classID,
        [in, out] COR_FIELD_OFFSET rFieldOffset[],
        [in] ULONG cFieldOffset,
        [out] ULONG *pcFieldOffset,
        [out] ULONG *pulClassSize);

    HRESULT GetClassIDInfo2(
        [in] ClassID classId,
        [out] ModuleID *pModuleId,
        [out] mdTypeDef *pTypeDefToken,
        [out] ClassID *pParentClassId,
        [in] ULONG32 cNumTypeArgs,
        [out] ULONG32 *pcNumTypeArgs,
        [out] ClassID typeArgs[]);

    HRESULT GetCodeInfo2(
        [in] FunctionID functionID,
        [in] ULONG32 cCodeInfos,
        [out] ULONG32 *pcCodeInfos,
        [out, size_is(cCodeInfos), length_is(*pcCodeInfos)]
                COR_PRF_CODE_INFO codeInfos[]);

        HRESULT GetClassFromTokenAndTypeArgs(
        [in] ModuleID moduleID,
        [in] mdTypeDef typeDef,
        [in] ULONG32 cTypeArgs,
        [in, size_is(cTypeArgs)] ClassID typeArgs[],
        [out] ClassID* pClassID);

    HRESULT GetFunctionFromTokenAndTypeArgs(
        [in] ModuleID moduleID,
        [in] mdMethodDef funcDef,
        [in] ClassID classId,
        [in] ULONG32 cTypeArgs,
        [in, size_is(cTypeArgs)] ClassID typeArgs[],
        [out] FunctionID* pFunctionID);

    HRESULT EnumModuleFrozenObjects(
        [in] ModuleID moduleID,
        [out] ICorProfilerObjectEnum** ppEnum);

    HRESULT GetArrayObjectInfo(
        [in] ObjectID objectId,
        [in] ULONG32 cDimensions,
        [out, size_is(cDimensions), length_is(cDimensions)] ULONG32 pDimensionSizes[],
        [out, size_is(cDimensions), length_is(cDimensions)] int pDimensionLowerBounds[],
        [out] BYTE **ppData);

    HRESULT GetBoxClassLayout(
        [in] ClassID classId,
        [out] ULONG32 *pBufferOffset);

    HRESULT GetThreadAppDomain(
        [in] ThreadID threadId,
        [out] AppDomainID *pAppDomainId);

    HRESULT GetRVAStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [out] void **ppAddress);

    HRESULT GetAppDomainStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] AppDomainID appDomainId,
        [out] void **ppAddress);

    HRESULT GetThreadStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] ThreadID threadId,
        [out] void **ppAddress);

    HRESULT GetContextStaticAddress(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [in] ContextID contextId,
        [out] void **ppAddress);

    HRESULT GetStaticFieldInfo(
        [in] ClassID classId,
        [in] mdFieldDef fieldToken,
        [out] COR_PRF_STATIC_TYPE *pFieldInfo);

    HRESULT GetGenerationBounds(
        [in] ULONG cObjectRanges,
        [out] ULONG *pcObjectRanges,
        [out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);

    HRESULT GetObjectGeneration(
        [in] ObjectID objectId,
        [out] COR_PRF_GC_GENERATION_RANGE *range);

    HRESULT GetNotifiedExceptionClauseInfo(
        [out] COR_PRF_EX_CLAUSE_INFO *pinfo);
}

メソッド

メソッド

説明

ICorProfilerInfo2::DoStackSnapshot メソッド

指定したスレッドのスタックを走査して、マネージ呼び出しフレームをプロファイラに報告します。

ICorProfilerInfo2::EnumModuleFrozenObjects メソッド

指定したモジュール内の固定オブジェクトの反復処理を実行できる列挙子を取得します。

ICorProfilerInfo2::GetAppDomainStaticAddress メソッド

指定したアプリケーション ドメインのスコープ内にある、指定したアプリケーション ドメイン内静的フィールドのアドレスを取得します。

ICorProfilerInfo2::GetArrayObjectInfo メソッド

配列オブジェクトの詳細情報を取得します。

ICorProfilerInfo2::GetBoxClassLayout メソッド

指定したボックス化済み値型のクラス レイアウトに関する情報を取得します。

ICorProfilerInfo2::GetClassFromTokenAndTypeArgs メソッド

指定したメタデータ トークンおよび任意の型引数の ClassID 値を使用して、型の ClassID を取得します。

ICorProfilerInfo2::GetClassIDInfo2 メソッド

指定したジェネリック クラスの親モジュール、そのクラスのメタデータ トークン、その親クラスの ClassID、およびそのクラスの型引数が存在する場合はそれぞれの ClassID を取得します。

ICorProfilerInfo2::GetClassLayout メソッド

指定したクラスで定義されるフィールドのメモリ内レイアウトに関する情報を取得します。つまり、このメソッドはクラスのフィールドのオフセットを取得します。

ICorProfilerInfo2::GetCodeInfo2 メソッド

指定した FunctionID に関連付けられているネイティブ コードの範囲を取得します。

ICorProfilerInfo2::GetContextStaticAddress メソッド

指定したコンテキストのスコープ内にある、指定したコンテキスト内静的フィールドのアドレスを取得します。

ICorProfilerInfo2::GetFunctionFromTokenAndTypeArgs メソッド

指定したメタデータ トークン、関数を含むクラス、および任意の型引数の ClassID 値を使用して、関数の FunctionID を取得します。

ICorProfilerInfo2::GetFunctionInfo2 メソッド

関数の親クラス、メタデータ トークン、および型引数が存在する場合はそれぞれの ClassID を取得します。

ICorProfilerInfo2::GetGenerationBounds メソッド

ガベージ コレクトされたヒープの生成を実行するメモリ領域 (ヒープのセグメント) を取得します。

ICorProfilerInfo2::GetNotifiedExceptionClauseInfo メソッド

実行されようとしているか実行されたばかりの exception 句 (catch、finally、filter) のネイティブ アドレスおよびフレーム情報を取得します。

ICorProfilerInfo2::GetObjectGeneration メソッド

指定したオブジェクトが格納されているヒープのセグメントを取得します。

ICorProfilerInfo2::GetRVAStaticAddress メソッド

指定された相対仮想アドレス (RVA: Relative Virtual Address) 静的フィールドのアドレスを取得します。

ICorProfilerInfo2::GetStaticFieldInfo メソッド

指定したフィールドが静的であるスコープを取得します。

ICorProfilerInfo2::GetStringLayout メソッド

文字列オブジェクトのレイアウトに関する情報を取得します。

ICorProfilerInfo2::GetThreadAppDomain メソッド

指定したスレッドが現在コードを実行しているアプリケーション ドメインの ID を取得します。

ICorProfilerInfo2::GetThreadStaticAddress メソッド

指定したスレッドのスコープ内にある、指定したスレッド内静的フィールドのアドレスを取得します。

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 メソッド

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

解説

プロファイラは ICorProfilerInfo2 インターフェイスのメソッドを呼び出して、イベント監視および要求情報を制御するために CLR とやり取りします。

ICorProfilerInfo2 インターフェイスのメソッドは、フリー スレッド モデルを使用して CLR によって実装されます。各メソッドは、成功または失敗を示す HRESULT を返します。返される可能性があるリターン コードの一覧については、CorError.h ファイルを参照してください。

CLR は、プロファイラの ICorProfilerCallback::Initialize の実装を使用して、初期化中に ICorProfilerInfo2 インターフェイスを各コード プロファイラに渡します。コード プロファイラは ICorProfilerInfo2 インターフェイスのメソッドを呼び出して、CLR の制御下で実行中のマネージ コードに関する情報を取得できます。

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー : CorProf.idl

ライブラリ : CorGuids.lib

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICorProfilerInfo

その他の技術情報

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