Condividi tramite


CA1900: I campi dei tipi di valore devono essere portabili

Articolo Valore
ID regola CA1900
Category Microsoft.Portability
Modifica Interruzione: se il campo può essere visualizzato all'esterno dell'assembly.

Non di rilievo: se il campo non è visibile all'esterno dell'assembly.

Causa

Questa regola verifica che le strutture dichiarate con layout esplicito siano allineate correttamente quando viene eseguito il marshalling al codice non gestito nei sistemi operativi a 64 bit. IA-64 non consente accessi alla memoria non idonei e il processo si arresta in modo anomalo se questa violazione non è corretta.

Descrizione regola

Le strutture con layout esplicito che contengono campi non allineati causano arresti anomali nei sistemi operativi a 64 bit.

Come correggere le violazioni

Tutti i campi di dimensioni inferiori a 8 byte devono avere offset multipli delle dimensioni e i campi che sono 8 byte o più devono avere offset multipli di 8. Un'altra soluzione consiste nell'usare LayoutKind.Sequential invece di LayoutKind.Explicit, se ragionevole.

Quando eliminare gli avvisi

Questo avviso deve essere eliminato solo se si verifica in caso di errore.