共用方式為


ICorProfilerCallback2

更新:2007 年 11 月

提供方法,讓 Common Language Runtime (CLR) 在分析工具已訂閱的事件發生時,用於告知程式碼剖析工具。ICorProfilerCallback2 介面是 ICorProfilerCallback 介面的擴充部分。也就是說,它會提供 .NET Framework 2.0 版中新增的新回呼。

注意事項:

每個方法實作都必須傳回 HRESULT,成功時其值為 S_OK,失敗時則為 E_FAIL。目前,CLR 會忽略每個回呼所傳回的 HRESULT,但 ICorProfilerCallback::ObjectReferences 除外。

interface ICorProfilerCallback2 : ICorProfilerCallback
{
    HRESULT ThreadNameChanged(
        [in] ThreadID threadId,
        [in] ULONG cchName,
        [in] WCHAR name[]);
    HRESULT GarbageCollectionStarted(
        [in] int cGenerations,
        [in, size_is(cGenerations), length_is(cGenerations)] BOOL generationCollected[],
        [in] COR_PRF_GC_REASON reason);
    HRESULT SurvivingReferences(
        [in]                                    ULONG    cSurvivingObjectIDRanges,
        [in, size_is(cSurvivingObjectIDRanges)] ObjectID objectIDRangeStart[] ,
        [in, size_is(cSurvivingObjectIDRanges)] ULONG    cObjectIDRangeLength[] );
    HRESULT GarbageCollectionFinished();
    HRESULT FinalizeableObjectQueued(
        [in] DWORD finalizerFlags,
        [in] ObjectID objectID);
    HRESULT RootReferences2(
        [in]                     ULONG    cRootRefs,
        [in, size_is(cRootRefs)] ObjectID rootRefIds[],
        [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_KIND rootKinds[],
        [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_FLAGS rootFlags[],
        [in, size_is(cRootRefs)] UINT_PTR rootIds[]);
    HRESULT HandleCreated(
        [in] GCHandleID handleId,
        [in] ObjectID initialObjectId);
    HRESULT HandleDestroyed(
        [in] GCHandleID handleId);
}

方法

方法

描述

ICorProfilerCallback2::FinalizeableObjectQueued 方法

告知程式碼剖析工具,已經將具有完成項的物件排入完成項執行緒的佇列,以等候執行其 Finalize 方法。

ICorProfilerCallback2::GarbageCollectionFinished 方法

向分析工具告知記憶體回收已完成,並且已經為它發出所有記憶體回收回呼。

ICorProfilerCallback2::GarbageCollectionStarted 方法

向程式碼剖析工具告知,已啟動記憶體回收。

ICorProfilerCallback2::HandleCreated 方法

告知程式碼剖析工具,已建立記憶體回收控制代碼。

ICorProfilerCallback2::HandleDestroyed 方法

向程式碼剖析工具告知,已終結記憶體回收控制代碼。

ICorProfilerCallback2::RootReferences2 方法

在發生記憶體回收之後,向分析工具告知根參考。這個方法是 ICorProfilerCallback::RootReferences 方法的擴充部分。

ICorProfilerCallback2::SurvivingReferences 方法

向分析工具告知未被記憶體回收的物件參考。

ICorProfilerCallback2::ThreadNameChanged 方法

向程式碼剖析工具告知,執行緒的名稱已變更。

備註

CLR 會在 ICorProfilerCallback (或 ICorProfilerCallback2) 介面中呼叫方法,以便於分析工具已訂閱的事件發生時告知分析工具。這是主要的回呼介面,CLR 會透過此介面與程式碼剖析工具通訊。

程式碼剖析工具必須實作 ICorProfilerCallback 介面的方法。對於 .NET Framework 2.0 和較新版本,分析工具也必須實作 ICorProfilerCallback2 方法。每個方法實作都必須傳回 HRESULT,成功時其值為 S_OK,失敗時則為 E_FAIL。目前,CLR 會忽略每個回呼所傳回的 HRESULT,但 ICorProfilerCallback::ObjectReferences 除外。

在 Microsoft Windows 登錄中,程式碼剖析工具必須註冊其 COM 物件,該物件會實作 ICorProfilerCallbackICorProfilerCallback2 介面。程式碼剖析工具會呼叫 ICorProfilerInfo::SetEventMask,訂閱要接收告知的事件。通常會在分析工具的 ICorProfilerCallback::Initialize 實作中完成此項。當執行的執行階段處理序中即將發生事件或剛才已發生事件時,分析工具就能夠接收告知。

注意事項:

分析工具會註冊一個 COM 物件。如果分析工具是針對 .NET Framework 1.0 版或 1.1 版,則該 COM 物件只需要實作 ICorProfilerCallback 的方法。如果是針對 .NET Framework 2.0 版和較新的版本,則 COM 物件也必須實作 ICorProfilerCallback2 的方法。

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**CorProf.idl

**程式庫:**CorGuids.lib

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

請參閱

參考

ICorProfilerCallback

其他資源

分析介面