Partager via


IMetaDataEmit::SetClassLayout Method

Termine la disposition des champs d’une classe qui a été définie par un appel antérieur à La méthode DefineTypeDef.

Syntax

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

Parameters

td [in] Jeton mdTypeDef qui spécifie la classe à mettre en place.

dwPackSize [in] Taille d’emballage : 1, 2, 4, 8 ou 16 octets. La taille d’emballage est le nombre d’octets entre les champs adjacents.

rFieldOffsets [in] Tableau de structures COR_FIELD_OFFSET , chacun spécifiant un champ de la classe et le décalage du champ dans la classe. Terminez le tableau avec mdTokenNil.

ulClassSize [in] Taille, en octets, de la classe.

Remarks

La classe est initialement définie en appelant la méthode IMetaDataEmit ::D efineTypeDef et en spécifiant l’une des trois dispositions pour les champs de la classe : automatique, séquentielle ou explicite. Normalement, vous utilisez la disposition automatique et laissez le runtime choisir le meilleur moyen de disposer les champs.

Toutefois, vous souhaiterez peut-être que les champs soient disposés en fonction de la disposition utilisée par le code non managé. Dans ce cas, choisissez une disposition séquentielle ou explicite et appelez SetClassLayout pour terminer la disposition des champs :

  • Disposition séquentielle : spécifiez la taille d’emballage. Un champ est aligné en fonction de sa taille naturelle ou de sa taille d’emballage, selon le décalage le plus petit du champ. Définissez rFieldOffsets et ulClassSize sur zéro.

  • Disposition explicite : spécifiez le décalage de chaque champ ou spécifiez la taille de classe et la taille d’emballage.

Requirements

Plates-formes: Consultez les systèmes d’exploitation pris en charge par .NET.

Header: Cor.h

Library: CorGuids.lib

See also