다음을 통해 공유


IMetaDataEmit::SetClassLayout 메서드

이전에 IMetaDataEmit::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::DefineTypeDef 메서드를 호출하고 클래스의 필드에 대한 세 개의 레이아웃(자동, 순차적 또는 명시적) 중 하나를 지정합니다. 일반적으로는 자동 레이아웃을 사용하여 런타임에서 필드에 가장 적합한 레이아웃을 선택하도록 합니다.

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

  • 순차적 레이아웃: 압축 크기를 지정합니다. 필드는 원래 크기나 압축 크기에 따라 정렬됩니다. 어느 경우에든 필드 오프셋은 더 작아집니다. rFieldOffsets와 ulClassSize는 0으로 설정합니다.

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

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: Cor.h

라이브러리: MSCorEE.dll에서 리소스로 사용됨

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

참고 항목

참조

IMetaDataEmit 인터페이스

IMetaDataEmit2 인터페이스