IMetaDataEmit::SetClassLayout メソッド

前の IMetaDataEmit::DefineTypeDef メソッド 呼び出しで定義されているクラスのフィールドのレイアウトを完了します。

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

パラメーター

  • td
    [入力] レイアウトされるクラスを指定する mdTypeDef トークン。

  • dwPackSize
    [入力] パッキング サイズ : 1、2、4、8、または 16 バイト。 パッキング サイズは、隣接するフィールド間のバイト数です。

  • rFieldOffsets
    [入力] COR_FIELD_OFFSET 構造体の配列。各構造体は、クラスのフィールドおよびクラス内のフィールドのオフセットを指定します。 mdTokenNil を使用して配列を終了します。

  • ulClassSize
    [入力] クラスのサイズ (バイト単位)。

解説

クラスは最初に IMetaDataEmit::DefineTypeDef メソッドの呼び出しによって定義され、クラスのフィールドの 3 つのレイアウト (自動、シーケンシャル、または明示的) の 1 つを指定します。 通常は自動レイアウトを使用して、フィールドをレイアウトする最適な方法をランタイムで選択できるようにします。

ただし、アンマネージ コードが使用する配置に従って、フィールドをレイアウトすることもできます。 この場合は、シーケンシャル レイアウトまたは明示的なレイアウトを選択し、SetClassLayout を呼び出してフィールドのレイアウトを完了します。

  • シーケンシャル レイアウト : パッキング サイズを指定します。 フィールドは通常のサイズまたはパッキング サイズに従って配置され、どちらの場合もフィールドのオフセットは小さくなります。 rFieldOffsets および ulClassSize をゼロに設定します。

  • 明示的なレイアウト : 各フィールドのオフセットを指定するか、クラス サイズとパッキング サイズを指定します。

必要条件

プラットフォーム : 「.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 インターフェイス