Compartilhar via


ICorProfilerInfo2::GetClassLayout Method

Gets information about the layout, in memory, of the fields defined by the specified class. That is, this method gets the offsets of the class's fields.

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

Parameters

  • classID
    [in] The ID of the class for which the layout will be retrieved.

  • rFieldOffset
    [in, out] An array of COR_FIELD_OFFSET structures, each of which contains the tokens and offsets of the class's fields.

  • cFieldOffset
    [in] The size of the rFieldOffset array.

  • pcFieldOffset
    [out] A pointer to the total number of available elements. If cFieldOffset is 0, this value indicates the number of elements needed.

  • pulClassSize
    [out] A pointer to a location that contains the size, in bytes, of the class.

Remarks

The GetClassLayout method returns only the fields defined by the class itself. If the class's parent class has defined fields as well, the profiler must call GetClassLayout on the parent class to obtain those fields.

If you use GetClassLayout with string classes, the method will not fail, but the data it returns will not be correct. Use ICorProfilerInfo2::GetStringLayout to get information about how a string is laid out. GetClassLayout will fail when called with an array class.

After GetClassLayout returns, you must verify that the rFieldOffset buffer was large enough to contain all the available COR_FIELD_OFFSET structures. To do this, compare the value that pcFieldOffset points to with the size of rFieldOffset divided by the size of a COR_FIELD_OFFSET structure. If rFieldOffset is not large enough, allocate a larger rFieldOffset buffer, update cFieldOffset with the new, larger size, and call GetClassLayout again.

Alternatively, you can first call GetClassLayout with a zero-length rFieldOffset buffer to obtain the correct buffer size. You can then set the buffer size to the value returned in pcFieldOffset and call GetClassLayout again.

For more information about these two approaches, see Caller-Allocated Buffers in the Profiling API.

Requirements

Platforms: Windows 2000, Windows XP, Windows Server 2003 family

Header: CorProf.idl

Library: CorGuids.lib

.NET Framework Version: 2.0

See Also

Concepts

ICorProfilerInfo Interface

ICorProfilerInfo2 Interface

Profiling Interfaces

Profiling (Unmanaged API Reference)