CA1900: 値型フィールドはポータブルでなければなりません
TypeName |
ValueTypeFieldsShouldBePortable |
CheckId |
CA1900 |
カテゴリ |
Microsoft.Portability |
互換性に影響する変更点 |
あり – フィールドがアセンブリの外部で参照できる場合 なし - フィールドがアセンブリの外部で参照できない場合 |
原因
この規則は、明示的なレイアウトによって宣言された構造体が、64 ビット オペレーティング システムでアンマネージ コードにマーシャリングされるときに、適切にアライメントされるかどうかを確認します。 IA-64 は、アライメントされていないメモリのアクセスを許可しません。この違反が修正されない場合、プロセスはクラッシュします。
規則の説明
明示的なレイアウトを持つ構造体に、正しくアライメントされていないフィールドが含まれていると、64 ビット オペレーティング システムでクラッシュが発生します。
違反の修正方法
8 バイト未満のすべてのフィールドは、それぞれのサイズの倍数のオフセットを持つ必要があります。また、8 バイト以上のフィールドは、8 の倍数のオフセットを持つ必要があります。 状況に応じて、LayoutKind.Explicit の代わりに LayoutKind.Sequential を使用して修正することもできます。
警告を抑制する状況
この警告は、エラーで生成された場合にのみ抑制します。