Partilhar 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 [em] A ID da classe para a qual o layout será recuperado.

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

cFieldOffset [em] O tamanho da rFieldOffset matriz.

pcFieldOffset [saídas] 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 [saídas] 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 os retornos, 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 com o tamanho de dividido pelo tamanho de rFieldOffset 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 para o valor retornado e pcFieldOffset chamar GetClassLayout novamente.

Requirements

Plataformas: Consulte Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Library: CorGuids.lib

Versões do .NET Framework: Disponível desde 2.0

See also