Compartir por


ICorProfilerInfo2::GetClassLayout Method

Obtiene información sobre el diseño, en memoria, de los campos definidos por la clase especificada. Es decir, este método obtiene los desplazamientos de los campos de la clase.

Syntax

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

Parameters

classID [in] Identificador de la clase para la que se recuperará el diseño.

rFieldOffset [dentro, fuera] Matriz de COR_FIELD_OFFSET estructuras, cada una de las cuales contiene los tokens y desplazamientos de los campos de la clase.

cFieldOffset [in] Tamaño de la rFieldOffset matriz.

pcFieldOffset [out] Puntero al número total de elementos disponibles. Si cFieldOffset es 0, este valor indica el número de elementos necesarios.

pulClassSize [out] Puntero a una ubicación que contiene el tamaño, en bytes, de la clase .

Remarks

El GetClassLayout método devuelve solo 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 esos campos.

Si usa GetClassLayout con clases de cadena, se producirá un error en el método con el código de error E_INVALIDARG. Use ICorProfilerInfo2::GetStringLayout para obtener información sobre el diseño de una cadena. GetClassLayout también se producirá un error cuando se llame a con una clase de matriz.

Después GetClassLayout de la devolución, debe comprobar que el rFieldOffset búfer era lo suficientemente grande como para contener todas las estructuras disponibles COR_FIELD_OFFSET . Para ello, compare el valor al que pcFieldOffset apunta con el tamaño de rFieldOffset dividido por el tamaño de una COR_FIELD_OFFSET estructura. Si rFieldOffset no es lo suficientemente grande, asigne un búfer mayor rFieldOffset , actualice cFieldOffset con el nuevo tamaño, mayor y vuelva a llamar a GetClassLayout .

Como alternativa, puede llamar GetClassLayout primero con un búfer de longitud rFieldOffset cero para obtener el tamaño correcto del búfer. A continuación, puede establecer el tamaño del búfer en el valor devuelto en pcFieldOffset y volver a llamar a GetClassLayout .

Requirements

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Library: CorGuids.lib

versiones de .NET Framework: disponible desde la versión 2.0

See also