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