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