ICorProfilerInfo2::GetClassLayout 方法

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

語法

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,則該方法會失敗,伴隨錯誤碼 E_INVALIDARG。 使用 ICorProfilerInfo2::GetStringLayout 取得字串配置的資訊。 以陣列類別呼叫 GetClassLayout 時也會失敗。

GetClassLayout 傳回之後,您必須確認 rFieldOffset 緩衝區夠大,可以包含所有可用的 COR_FIELD_OFFSET 結構。 若要這樣做,比對 pcFieldOffset 指向的值和 rFieldOffset 的大小除以 COR_FIELD_OFFSET 的結構大小。 如果 rFieldOffset 不夠大,則請配置一個更大的 rFieldOffset 緩衝區,以新的、較大的大小來更新 cFieldOffset,然後再呼叫 GetClassLayout 一次。

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

規格需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework版本:自 2.0 起提供

另請參閱