Partilhar via


IMetaDataEmit::SetClassLayout Method

Completa o layout de campos para uma classe que foi definida por uma chamada anterior para o Método DefineTypeDef.

Syntax

HRESULT SetClassLayout (
    [in]  mdTypeDef           td,
    [in]  DWORD               dwPackSize,
    [in]  COR_FIELD_OFFSET    rFieldOffsets[],
    [in]  ULONG               ulClassSize
);

Parameters

td [em] Um mdTypeDef token que especifica a classe a ser definida.

dwPackSize [em] O tamanho da embalagem: 1, 2, 4, 8 ou 16 bytes. O tamanho da embalagem é o número de bytes entre campos adjacentes.

rFieldOffsets [em] Uma matriz de estruturas COR_FIELD_OFFSET , cada uma das quais especifica um campo da classe e o deslocamento do campo dentro da classe. Encerre a matriz com mdTokenNil.

ulClassSize [em] O tamanho, em bytes, da classe.

Remarks

A classe é inicialmente definida chamando o método IMetaDataEmit::D efineTypeDef e especificando um dos três layouts para os campos da classe: automático, sequencial ou explícito. Normalmente, você usaria o layout automático e deixaria o tempo de execução escolher a melhor maneira de dispor os campos.

No entanto, você pode querer os campos dispostos de acordo com a disposição que o código não gerenciado usa. Nesse caso, escolha o layout sequencial ou explícito e chame SetClassLayout para completar o layout dos campos:

  • Layout sequencial: Especifique o tamanho da embalagem. Um campo é alinhado de acordo com seu tamanho natural ou o tamanho da embalagem, o que resultar no deslocamento menor do campo. Defina rFieldOffsets e ulClassSize para zero.

  • Layout explícito: especifique o deslocamento de cada campo ou especifique o tamanho da classe e o tamanho da embalagem.

Requirements

Plataformas: Consulte Sistemas operacionais suportados pelo .NET.

Header: Cor.h

Library: CorGuids.lib

See also