指定したクラスによって定義されたフィールドのレイアウトに関する情報をメモリ内で取得します。 つまり、このメソッドはクラスのフィールドのオフセットを取得します。
Syntax
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
Parameters
classID [in]レイアウトを取得するクラスの ID。
rFieldOffset [入力、出力] COR_FIELD_OFFSET 構造体の配列。各構造体には、クラスのフィールドのトークンとオフセットが含まれます。
cFieldOffset [in] rFieldOffset 配列のサイズ。
pcFieldOffset [out]使用可能な要素の合計数へのポインター。
cFieldOffsetが 0 の場合、この値は必要な要素の数を示します。
pulClassSize [out]クラスのサイズ (バイト単位) を含む場所へのポインター。
Remarks
GetClassLayout メソッドは、クラス自体によって定義されたフィールドのみを返します。 クラスの親クラスにもフィールドが定義されている場合、プロファイラーは親クラスの GetClassLayout を呼び出してそれらのフィールドを取得する必要があります。
文字列クラスで GetClassLayout を使用すると、エラー コード E_INVALIDARGでメソッドが失敗します。
ICorProfilerInfo2::GetStringLayout を使用して、文字列のレイアウトに関する情報を取得します。
GetClassLayout は、配列クラスで呼び出されたときにも失敗します。
GetClassLayoutが返されたら、使用可能なすべてのCOR_FIELD_OFFSET構造体を格納するのに十分な大きさのrFieldOffset バッファーが存在することを確認する必要があります。 これを行うには、 pcFieldOffset が指す値を、 rFieldOffset のサイズを COR_FIELD_OFFSET 構造体のサイズで割った値と比較します。
rFieldOffsetが十分な大きさでない場合は、より大きなrFieldOffset バッファーを割り当て、新しい大きなサイズでcFieldOffsetを更新し、GetClassLayoutを再度呼び出します。
または、最初に長さ 0 のGetClassLayout バッファーでrFieldOffsetを呼び出して、正しいバッファー サイズを取得することもできます。 その後、バッファー サイズを pcFieldOffset で返される値に設定し、 GetClassLayout を再度呼び出すことができます。
Requirements
:「システム要件」を参照してください。
ヘッダ: CorProf.idl、CorProf.h
Library: CorGuids.lib
.NET Framework のバージョン: 2.0 以降で使用可能
See also
.NET