ICorProfilerInfo2::GetClassLayout Method

获取有关由指定类定义的字段的布局信息(内存中)。 也就是说,此方法获取类字段的偏移量。

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 [in, out] COR_FIELD_OFFSET 结构的数组,每个结构都包含类字段的标记和偏移量。

cFieldOffset [in]数组的大小 rFieldOffset

pcFieldOffset [out]指向可用元素总数的指针。 如果 cFieldOffset 为 0,则此值指示所需的元素数。

pulClassSize [out]指向包含类大小(以字节为单位)的位置的指针。

Remarks

该方法 GetClassLayout 仅返回由类本身定义的字段。 如果类的父类也定义了字段,探查器必须调用 GetClassLayout 父类以获取这些字段。

如果与字符串类一起使用 GetClassLayout ,该方法将失败并E_INVALIDARG错误代码。 使用 ICorProfilerInfo2::GetStringLayout 获取有关字符串布局的信息。 GetClassLayout 使用数组类调用时也会失败。

返回后 GetClassLayout ,必须验证 rFieldOffset 缓冲区是否足够大,足以包含所有可用 COR_FIELD_OFFSET 结构。 为此,请将指向的值 pcFieldOffset 与结构的大小 rFieldOffset 除以大小 COR_FIELD_OFFSET 进行比较。 如果 rFieldOffset 不够大,请分配更大的 rFieldOffset 缓冲区,使用新的、更大的大小进行更新 cFieldOffset ,然后再次调用 GetClassLayout

或者,可以使用零长度GetClassLayout缓冲区首次调用rFieldOffset以获取正确的缓冲区大小。 然后,可以将缓冲区大小设置为返回 pcFieldOffset 的值,然后再次调用 GetClassLayout

Requirements

平台:请参阅系统要求

页眉: CorProf.idl、CorProf.h

Library: CorGuids.lib

.NET Framework 版本:自 2.0 起提供

See also