Udostępnij za pośrednictwem


CA1900: Pola o typie wartości powinny być przenośne

TypeName

ValueTypeFieldsShouldBePortable

CheckId

CA1900

Kategoria

Microsoft.Portability

Zmiana kluczowa

Kluczowa - jeśli pole jest widoczne spoza zestawu.

Niekluczowa - Jeśli pole nie jest widoczne na zewnątrz zestawu.

Przyczyna

Ta regułą sprawdza, czy struktury, które są zadeklarowane z jawnym układem, zostaną prawidłowo wyrównane podczas przekazywania do kodu niezarządzalnego na 64-bitowym systemie operacyjnym.IA-64 nie zezwala na niewyrównane dostępy do pamięci i procesy ulegną awarii jeśli naruszenie nie zostanie naprawione.

Opis reguły

Struktury, które mają układ jawny, zawierający nieprawidłowo wyrównane pola są przyczyną awarii w 64-bitowych systemach operacyjnych.

Jak naprawić naruszenia

Wszystkie pola, które są mniejsze niż 8 bajtów muszą mieć wartość przesunięcia, które są wielokrotnością ich rozmiaru, pola, które są 8 lub więcej bajtowe muszą mieć przesunięcia, które są wielokrotnością 8.Innym rozwiązaniem jest użycie LayoutKind.Sequential zamiast LayoutKind.Explicit, jeśli jest to uzasadnione.

Kiedy pominąć ostrzeżenia

Ostrzeżenie to należy pomijać tylko wtedy, gdy występuje w błędach.