ICorProfilerInfo2::GetClassLayout (Método)
Obtiene información sobre la distribución, en memoria, de los campos definidos por la clase especificada. Es decir, este método obtiene los desplazamientos de los campos de la clase.
Sintaxis
HRESULT GetClassLayout(
[in] ClassID classID,
[in, out] COR_FIELD_OFFSET rFieldOffset[],
[in] ULONG cFieldOffset,
[out] ULONG *pcFieldOffset,
[out] ULONG *pulClassSize);
Parámetros
classID
[in] Identificador de la clase para la cual se recuperará la distribución.
rFieldOffset
[in, out] Matriz de estructuras COR_FIELD_OFFSET, cada una de los cuales contiene los tokens y desplazamientos de los campos de la clase.
cFieldOffset
[in] Tamaño de la matriz rFieldOffset
.
pcFieldOffset
[out] Puntero al número total de elementos disponibles. Si cFieldOffset
es 0, este valor indica el número de elementos necesario.
pulClassSize
[out] Puntero a una ubicación que contiene el tamaño, en bytes, de la clase.
Comentarios
El método GetClassLayout
solo devuelve los campos definidos por la propia clase. Si la clase primaria de la clase también tiene campos definidos, el generador de perfiles debe llamar a GetClassLayout
en la clase primaria para obtener dichos campos.
Si usa GetClassLayout
con clases de cadena, el método producirá un error con el código E_INVALIDARG. Use ICorProfilerInfo2::GetStringLayout para obtener información sobre la distribución de una cadena. GetClassLayout
también producirá un error cuando se le llama con una clase de matriz.
Después de que GetClassLayout
vuelva, debe comprobar que el búfer rFieldOffset
era lo suficientemente grande como para contener todas las estructuras COR_FIELD_OFFSET
disponibles. Para ello, compare el valor al que pcFieldOffset
apunta con el tamaño de rFieldOffset
dividido por el tamaño de una estructura COR_FIELD_OFFSET
. Si rFieldOffset
no es suficientemente grande, asigne un búfer rFieldOffset
mayor, actualice cFieldOffset
con el nuevo tamaño de mayores dimensiones y vuelva a llamar a GetClassLayout
.
También tiene la opción de llamar primero a GetClassLayout
con un búfer rFieldOffset
de longitud de cero para obtener el tamaño de búfer correcto. Después, puede establecer el tamaño del búfer en el valor devuelto en pcFieldOffset
y volver a llamar a GetClassLayout
.
Requisitos
Plataformas: Vea Requisitos de sistema.
Encabezado: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versiones de .NET Framework: disponible a partir de la versión 2.0