다음을 통해 공유


IMetaDataEmit::SetClassLayout 메서드

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

구문

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

매개 변수

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

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

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

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

설명

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

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

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

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

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: Cor.h

라이브러리: MsCorEE.dll에서 리소스로 사용됩니다.

.NET Framework 버전: 1.0부터 사용 가능

참고 항목