Метод ICorProfilerInfo2::GetClassLayout

Получает сведения о макете в памяти полей, определенных с помощью указанного класса. То есть этот метод получает смещения полей класса.

Синтаксис

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

Параметры

classID
[in] Идентификатор класса, для которого будет извлекаться макет.

rFieldOffset
[вход, выход] Массив COR_FIELD_OFFSET структур, каждая из которых содержит маркеры и смещения полей класса.

cFieldOffset
[in] Размер массива rFieldOffset.

pcFieldOffset
[out] Указатель на общее число доступных элементов. Если параметр cFieldOffset имеет значение 0, это значение указывает число необходимых элементов.

pulClassSize
[out] Указатель на расположение, которое содержит размер класса в байтах.

Комментарии

Метод 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 снова.

Требования

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

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

Библиотека: CorGuids.lib

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

См. также раздел