Udostępnij przez


IMetaDataEmit::SetClassLayout Method

Kończy układ pól dla klasy, która została zdefiniowana przez wcześniejsze wywołanie metody DefineTypeDef.

Syntax

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

Parameters

td [in] Token mdTypeDef określający klasę, która ma zostać ułożona.

dwPackSize [in] Rozmiar pakowania: 1, 2, 4, 8 lub 16 bajtów. Rozmiar pakowania to liczba bajtów między sąsiednimi polami.

rFieldOffsets [in] Tablica struktur COR_FIELD_OFFSET , z których każda określa pole klasy i przesunięcie pola w klasie. Zakończ tablicę za pomocą polecenia mdTokenNil.

ulClassSize [in] Rozmiar klasy w bajtach.

Remarks

Klasa jest początkowo definiowana przez wywołanie metody IMetaDataEmit::D efineTypeDef i określenie jednego z trzech układów dla pól klasy: automatycznych, sekwencyjnych lub jawnych. Zwykle należy użyć automatycznego układu i pozwolić środowisku uruchomieniowemu wybrać najlepszy sposób na rozmieszczenie pól.

Możesz jednak chcieć określić pola zgodnie z układem używanym przez niezarządzany kod. W takim przypadku wybierz układ sekwencyjny lub jawny i wywołaj metodę SetClassLayout , aby ukończyć układ pól:

  • Układ sekwencyjny: określ rozmiar pakowania. Pole jest wyrównane zgodnie z jego rozmiarem naturalnym lub rozmiarem pakowania, w zależności od tego, co powoduje mniejsze przesunięcie pola. Ustaw rFieldOffsets wartość i ulClassSize na zero.

  • Jawny układ: określ przesunięcie każdego pola lub określ rozmiar klasy i rozmiar pakowania.

Requirements

Platformy: Zobacz Obsługiwane systemy operacyjne platformy .NET.

Header: Cor.h

Library: CorGuids.lib

See also