Partilhar via


Método de ICorProfilerInfo2::GetClassLayout

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 de campos da classe.

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

Parâmetros

  • classID
    [in] A identificação da classe para o qual o layout será recuperado.

  • rFieldOffset
    [in, out] Uma matriz de COR_FIELD_OFFSET estruturas, cada qual contendo o tokens e os deslocamentos de 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 é 0, esse valor indica o número de elementos necessários.

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

Comentários

O GetClassLayout método retorna apenas os campos definidos pela própria classe. Se a classe do pai da classe tiver definido campos bem, o profiler deve chamar GetClassLayout na classe pai para obter esses campos.

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

Depois de GetClassLayout retorna, você deve verificar se a rFieldOffset buffer era grande o suficiente para conter todas as disponíveis COR_FIELD_OFFSET estruturas. Para fazer isso, compare o valor que pcFieldOffset pontos com o tamanho do rFieldOffset dividido pelo tamanho de um COR_FIELD_OFFSET estrutura. Se rFieldOffset não é grande o suficiente, alocar uma maior rFieldOffset buffer, a atualização cFieldOffset com o novo tamanho maior e a chamada GetClassLayout novamente.

Como alternativa, você pode primeiro chamar GetClassLayout com um comprimento zero rFieldOffset o buffer para obter o tamanho de buffer correto. Além disso, você pode então definir o tamanho do buffer para o valor retornado em pcFieldOffset e chame GetClassLayout novamente.

Para obter mais informações sobre essas duas abordagens, consulte Convenções de método de API de criação de perfil.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl, CorProf.h

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface de ICorProfilerInfo

Interface de ICorProfilerInfo2

Outros recursos

Interfaces de criação de perfil

A criação de perfil (referência de API não gerenciada)