共用方式為


ICorProfilerInfo2::GetClassLayout 方法

更新:2007 年 11 月

取得指定之類別所定義的欄位配置 (記憶體中) 相關資訊。也就是說,這個方法會取得此類別欄位的位移。

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

參數

  • classID
    [in] 將擷取其配置的類別 ID。

  • rFieldOffset
    [in, out] COR_FIELD_OFFSET 結構的陣列,每個結構分別包含此類別之欄位的語彙基元和位移。

  • cFieldOffset
    [in] rFieldOffset 陣列的大小。

  • pcFieldOffset
    [out] 可用項目總數的指標。如果 cFieldOffset 為 0,則此值表示所需的項目數目。

  • pulClassSize
    [out] 位置的指標,其包含此類別的大小 (以位元組為單位)。

備註

GetClassLayout 方法只會傳回由類別本身所定義的欄位。如果類別的父類別也定義欄位,則分析工具必須在此父類別上呼叫 GetClassLayout 以取得這些欄位。

如果以字串類別使用 GetClassLayout,則此方法將不會失敗,但傳回的資料將是不正確的。使用 ICorProfilerInfo2::GetStringLayout 取得字串配置的相關資訊。以陣列類別呼叫時,GetClassLayout 將會失敗。

傳回 GetClassLayout 之後,您必須驗證 rFieldOffset 緩衝區夠大,足以包含所有可用的 COR_FIELD_OFFSET 結構。若要完成這項工作,請比較 pcFieldOffset 所指向的值與 rFieldOffset 的大小除以 COR_FIELD_OFFSET 結構大小的結果。如果 rFieldOffset 不夠大,請配置較大的 rFieldOffset 緩衝區,以新的較大之大小來更新 cFieldOffset,然後重新呼叫 GetClassLayout

另外,您也可以先使用長度為零的 rFieldOffset 緩衝區來呼叫 GetClassLayout,以取得正確的緩衝區大小。接著您就可以將緩衝區大小設定為 pcFieldOffset 中傳回的值,並再次呼叫 GetClassLayout

如需這兩種方法的詳細資訊,請參閱分析 API 中由呼叫端配置的緩衝區

需求

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

**標頭:**CorProf.idl

**程式庫:**CorGuids.lib

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

請參閱

參考

ICorProfilerInfo

ICorProfilerInfo2

其他資源

分析介面

分析 (Unmanaged API 參考)