Compartilhar via


ICorProfilerInfo2::GetClassLayout Method

Obtém informações sobre o layout, na memória, dos campos definidos pela classe especificada. Ou seja, esse método obtém os deslocamentos dos campos da classe.

Syntax

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

Parameters

classID [in] A ID da classe para a qual o layout será recuperado.

rFieldOffset [dentro, fora] Uma matriz de estruturas de COR_FIELD_OFFSET , cada uma das quais contém os tokens e deslocamentos dos campos da classe.

cFieldOffset [in] O tamanho da rFieldOffset matriz.

pcFieldOffset [out] Um ponteiro para o número total de elementos disponíveis. Se cFieldOffset for 0, esse valor indicará o número de elementos necessários.

pulClassSize [out] Um ponteiro para um local que contém o tamanho, em bytes, da classe.

Remarks

O GetClassLayout método retorna apenas os campos definidos pela própria classe. Se a classe pai da classe também tiver campos definidos, o criador de perfil deverá chamar GetClassLayout a classe pai para obter esses campos.

Se você usar GetClassLayout com classes de cadeia de caracteres, o método falhará com o código de erro E_INVALIDARG. Use ICorProfilerInfo2::GetStringLayout para obter informações sobre o layout de uma cadeia de caracteres. GetClassLayout também falhará quando chamado com uma classe de matriz.

Após GetClassLayout o retorno, você deve verificar se o rFieldOffset buffer era grande o suficiente para conter todas as estruturas disponíveis COR_FIELD_OFFSET . Para fazer isso, compare o valor que pcFieldOffset aponta para o tamanho de rFieldOffset dividido pelo tamanho de uma COR_FIELD_OFFSET estrutura. Se rFieldOffset não for grande o suficiente, aloque um buffer maior rFieldOffset , atualize cFieldOffset com o novo tamanho maior e chame GetClassLayout novamente.

Como alternativa, você pode primeiro chamar GetClassLayout com um buffer de comprimento rFieldOffset zero para obter o tamanho correto do buffer. Em seguida, você pode definir o tamanho do buffer como o valor retornado pcFieldOffset e chamar GetClassLayout novamente.

Requirements

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Library: CorGuids.lib

versões do .NET Framework: disponíveis desde 2.0

See also