Compartilhar via


CA1900: os campos de tipo de valor devem ser móveis

TypeName

ValueTypeFieldsShouldBePortable

CheckId

CA1900

Categoria

Microsoft.Portability

Alteração Significativa

Interromper - se o campo pode ser considerado fora do assembly.

Sem-quebras - se o campo não é visível fora do assembly.

Causa

Esta regra verifica se as estruturas que são declaradas com layout explícito alinhem corretamente quando marshaling para código não gerenciado em sistemas operacionais de 64 bits.IA-64 não permite acessar de memória não alinhados e o processo falhará se essa violação não é fixa.

Descrição da Regra

As estruturas que têm explícito o layout que contém desalihnada causa dos campos falham em sistemas operacionais de 64 bits.

Como Corrigir Violações

Todos os campos que são menores que 8 bytes devem ter os deslocamentos que é um múltiplo de seu tamanho, e os campos que são 8 bytes ou mais devem ter os deslocamentos que é um múltiplo de 8.Outra solução é usar LayoutKind.Sequential em vez de LayoutKind.Explicit, se razoável.

Quando Suprimir Alertas

Esse aviso será suprimido apenas se ocorrer um erro.