Compartir a través de


ICorProfilerInfo2::GetClassLayout (Método)

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

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 que se va a recuperar el diseño.

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

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

  • 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.

Comentarios

El método GetClassLayout devuelve sólo los campos definidos por la propia clase. Si la clase primaria de la clase también ha definido campos, el generador de perfiles debe llamar a GetClassLayout en la clase primaria para obtener dichos campos.

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

Después de que GetClassLayout devuelva un resultado, debe comprobar que el búfer rFieldOffset es suficientemente grande para contener todas las estructuras COR_FIELD_OFFSET disponibles. Para ello, compare el valor al que pcFieldOffset señala 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 mayor, y llame a GetClassLayout de nuevo.

Otra opción es llamar primero a GetClassLayout con un búfer de rFieldOffset de longitud 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 llamar de nuevo a GetClassLayout.

Para obtener más información sobre estos dos enfoques, vea Convenciones de los métodos de la API de generación de perfiles.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICorProfilerInfo (Interfaz)

ICorProfilerInfo2 (Interfaz)

Otros recursos

Interfaces para generación de perfiles

Generación de perfiles (Referencia de la API no administrada)