Compartir a través de


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

Consulte también