Compartilhar via


Método ICorProfilerInfo2::GetClassLayout

Obtém informações sobre o layout na memória, dos campos definidas 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 ID de classe para o qual o layout será recuperado.

  • rFieldOffset
    [in, out] Uma matriz de COR_FIELD_OFFSET estruturas, cada qual contendo tokens e deslocamentos de campos da classe.

  • cFieldOffset
    [in] O dimensionar do rFieldOffset matriz.

  • pcFieldOffset
    [out] Um ponteiro para o número total de elementos disponível. If cFieldOffset é 0, esse valor indica o número de elementos necessários.

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

Comentários

The GetClassLayout método retornará somente os campos definidos pela classe propriamente dito. Se classe do pai a classe da tiver definido campos também, o criador de perfil 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 falhará, mas os dados que ele retorna só corretos. Use ICorProfilerInfo2::GetStringLayout para obter informações sobre como uma seqüência de caracteres é apresentada. GetClassLayout falhará quando chamado com uma classe de matriz.

Depois de GetClassLayout Retorna, você deve verificar que o rFieldOffset buffer era grande o suficiente para conter todas as disponível COR_FIELD_OFFSET estruturas. Para fazer isso, comparar o valor que pcFieldOffset pontos a com o dimensionar do rFieldOffset dividido pelo dimensionar de um COR_FIELD_OFFSET estrutura. If rFieldOffset não é grande o suficiente, alocar uma maior rFieldOffset buffer, atualização cFieldOffset com a novo e maior dimensionar e telefonar GetClassLayout novamente.

Como alternativa, você pode primeiro telefonar GetClassLayout com um comprimento zero rFieldOffset buffer para obter o dimensionar do buffer correto. Você pode então conjunto o dimensionar do buffer para o valor retornado em pcFieldOffset e chame GetClassLayout novamente.

Para obter mais informações sobre essas duas abordagens, consulte Buffers alocados chamador da API de criação de perfil.

Requisitos

Plataformas: See Requisitos de sistema do .NET framework.

Cabeçalho: CorProf.idl

Biblioteca: CorGuids.lib

.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface ICorProfilerInfo

Interface ICorProfilerInfo2

Outros recursos

Interfaces de criação de perfil

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