다음을 통해 공유


IMetaDataEmit::SetClassLayout Method

DefineTypeDef 메서드에 대한 이전 호출에서 정의한 클래스의 필드 레이아웃을 완료합니다.

Syntax

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

Parameters

td [in] mdTypeDef 배치할 클래스를 지정하는 토큰입니다.

dwPackSize [in] 압축 크기: 1, 2, 4, 8 또는 16바이트. 압축 크기는 인접 필드 간의 바이트 수입니다.

rFieldOffsets [in] 각각 클래스의 필드와 클래스 내의 필드 오프셋을 지정하는 COR_FIELD_OFFSET 구조체의 배열입니다. 를 사용하여 배열 mdTokenNil을 종료합니다.

ulClassSize [in] 클래스의 크기(바이트)입니다.

Remarks

클래스는 처음에 IMetaDataEmit::D efineTypeDef 메서드를 호출하고 클래스 필드에 대해 자동, 순차적 또는 명시적 세 가지 레이아웃 중 하나를 지정하여 정의됩니다. 일반적으로 자동 레이아웃을 사용하고 런타임에서 필드를 배치하는 가장 좋은 방법을 선택하도록 합니다.

그러나 비관리 코드에서 사용하는 정렬에 따라 필드를 배치할 수 있습니다. 이 경우 순차적 또는 명시적 레이아웃을 선택하고 호출 SetClassLayout 하여 필드 레이아웃을 완료합니다.

  • 순차적 레이아웃: 압축 크기를 지정합니다. 필드는 자연 크기 또는 압축 크기에 따라 정렬되므로 필드 오프셋이 작아집니다. ulClassSize 0으로 설정합니다rFieldOffsets.

  • 명시적 레이아웃: 각 필드의 오프셋을 지정하거나 클래스 크기와 압축 크기를 지정합니다.

Requirements

플랫폼:.NET 지원 운영 체제를 참조하세요.

Header: Cor.h

Library: CorGuids.lib

See also