No marshaling de cadeias de caracteres como ANSI (ou como Auto no Win9x), alguns caracteres podem ser alterados. Se o mapeamento ...

No marshaling de cadeias de caracteres como ANSI (ou como Auto no Win9x), alguns caracteres podem ser alterados. Se o mapeamento de melhor ajuste estiver ativado, as cadeias de caracteres que aparecerem diferentes em Unicode passarão por marshaling para as cadeias de caracteres ANSI idênticas, o que pode levar a decisões de segurança incorretas. Desativar o mapeamento de melhor ajuste reduz esse risco, pois todos os caracteres sem equivalentes são mapeados para "?". Além disso, observe que CharSet.Ansi é a configuração padrão para o marshaling de todas as cadeias de caracteres; o marshaling Unicode deve ser especificado explicitamente, como configuração CharSet de DllImport ou StructLayout, ou como atributo MarshalAs com UnmanagedType Unicode (ou dependente do sistema).