获取有关由指定类定义的字段的布局信息(内存中)。 也就是说,此方法获取类字段的偏移量。
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 起提供