Бөлісу құралы:


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] Идентификатор класса, для которого будет получен макет.

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 на размер, разделенный на размер rFieldOffsetCOR_FIELD_OFFSET структуры. Если rFieldOffset недостаточно большого размера, выделите больший rFieldOffset буфер, обновите cFieldOffset его новым, большим размером и снова вызовите GetClassLayout .

Кроме того, можно сначала вызвать GetClassLayout буфер нулевой длины rFieldOffset , чтобы получить правильный размер буфера. Затем можно задать размер буфера значением, возвращенным и снова вызываемым pcFieldOffsetGetClassLayout .

Requirements

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Library: CorGuids.lib

версии .NET Framework: доступно с версии 2.0

See also