Partilhar via


Método ICorProfilerInfo2::GetClassLayout

Obtém informações sobre o esquema, na memória, dos campos definidos pela classe especificada. Ou seja, este método obtém os desvios 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] O ID da classe para a qual o esquema será obtido.

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

cFieldOffset
[in] O tamanho da rFieldOffset matriz.

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

pulClassSize
[fora] Um ponteiro para uma localização que contém o tamanho, em bytes, da classe.

Observações

O GetClassLayout método devolve apenas os campos definidos pela própria classe. Se a classe principal da classe também tiver campos definidos, o gerador de perfis tem de chamar GetClassLayout a classe principal para obter esses campos.

Se utilizar GetClassLayout com classes de cadeia, o método falhará com o código de erro E_INVALIDARG. Utilize ICorProfilerInfo2::GetStringLayout para obter informações sobre o esquema de uma cadeia. GetClassLayout também falhará quando for chamada com uma classe de matriz.

Após GetClassLayout a devolução, tem de verificar se a rFieldOffset memória intermédia era suficientemente grande para conter todas as estruturas disponíveis COR_FIELD_OFFSET . Para tal, compare o valor que pcFieldOffset aponta com o tamanho de rFieldOffset dividido pelo tamanho de uma COR_FIELD_OFFSET estrutura. Se rFieldOffset não for suficientemente grande, aloque uma memória intermédia maior rFieldOffset , atualize cFieldOffset com o novo tamanho maior e chame GetClassLayout novamente.

Em alternativa, pode chamar GetClassLayout primeiro com uma memória intermédia de comprimento rFieldOffset zero para obter o tamanho da memória intermédia correto. Em seguida, pode definir o tamanho da memória intermédia para o valor devolvido em pcFieldOffset e chamar GetClassLayout novamente.

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

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

Ver também