Compartilhar via


Método 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 dos campos da classe.

Sintaxe

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 da classe para a qual o layout será recuperado.

rFieldOffset
[in, out] Uma matriz de estruturas COR_FIELD_OFFSET, cada uma delas contém os tokens e deslocamentos dos campos da classe.

cFieldOffset
[in] O tamanho da matriz rFieldOffset.

pcFieldOffset
[out] Um ponteiro para o número total de elementos disponíveis. Se cFieldOffset for 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 método GetClassLayout 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 na 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 o retorno de GetClassLayout, você deve verificar se o buffer rFieldOffset era grande o suficiente para conter todas as estruturas COR_FIELD_OFFSET disponíveis. Para fazer isso, compare o valor que pcFieldOffset aponta para o tamanho de rFieldOffset dividido pelo tamanho de uma estrutura COR_FIELD_OFFSET. Se rFieldOffset não for grande o suficiente, aloque um buffer rFieldOffset maior, atualize cFieldOffset com o tamanho aumentado e chame GetClassLayout novamente.

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

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

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

Confira também