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.