Export (0) Print
Expand All

Value type fields should be portable

TypeName

ValueTypeFieldsShouldBePortable

CheckId

CA1900

Category

Microsoft.Portability

Breaking Change

Breaking,NonBreaking

This rule checks that structures declared with explicit layout will align correctly when marshaled to unmanaged code on 64-bit platforms. IA-64 does not allow unaligned memory accesses and the process will crash if this violation is not fixed.

Structures with explicit layout containing misaligned fields cause crashes on 64-bit platforms.

All fields that are smaller than 8 bytes must have offsets that are multiple of their size, and fields that are 8 bytes or greater must have offsets that are a multiple of 8. Another solution is to use LayoutKind.Sequential instead of LayoutKind.Explicit if reasonable.

This warning should be excluded only if it occurs in error.

Community Additions

ADD
Show:
© 2015 Microsoft