Метод 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.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по