Condividi tramite


IMetaDataEmit::SetClassLayout Method

Completa il layout dei campi per una classe definita da una chiamata precedente al metodo DefineTypeDef.

Syntax

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

Parameters

td [in] Token mdTypeDef che specifica la classe da disporre.

dwPackSize [in] Dimensione di compressione: 1, 2, 4, 8 o 16 byte. La dimensione di compressione è il numero di byte tra i campi adiacenti.

rFieldOffsets [in] Matrice di strutture COR_FIELD_OFFSET , ognuna delle quali specifica un campo della classe e l'offset del campo all'interno della classe . Terminare la matrice con mdTokenNil.

ulClassSize [in] Dimensione, in byte, della classe .

Remarks

La classe viene inizialmente definita chiamando il metodo IMetaDataEmit::D efineTypeDef e specificando uno dei tre layout per i campi della classe: automatico, sequenziale o esplicito. In genere, si usa il layout automatico e si lascia che il runtime scelga il modo migliore per disporre i campi.

Tuttavia, è possibile che i campi siano disposti in base alla disposizione usata dal codice non gestito. In questo caso, scegliere layout sequenziale o esplicito e chiamare SetClassLayout per completare il layout dei campi:

  • Layout sequenziale: specificare le dimensioni di compressione. Un campo viene allineato in base alla dimensione naturale o alla dimensione di compressione, a seconda del risultato dell'offset più piccolo del campo. Impostare rFieldOffsets e ulClassSize su zero.

  • Layout esplicito: specificare l'offset di ogni campo o specificare le dimensioni della classe e la dimensione di compressione.

Requirements

Piattaforme: Vedere Sistemi operativi supportati da .NET.

Header: Cor.h

Library: CorGuids.lib

See also