Empacotamento de estruturas no .NET Compact Framework
Você pode incorporar matrizes e sequências de caracteres em estruturas para empacotamento.Você deve usar o MarshalAsAttribute o atributo para especificar como você deseja que as seqüências de caracteres incorporadas sejam empacotadas, caso contrário uma exceção é lançada.
Quando faz o realizar marshaling de uma seqüência de caracteres para um wchar_t*, Você pode especificar um dos atributos a seguintes, que serão empacotado sistema autônomo um ponteiro para uma seqüência de caracteres Unicode:
[MarshalAs(UnmanagedType.LPWStr)]
- ou -
[MarshalAs(UnmanagedType.LPTStr)]
A tabela a seguir mostra definições de estruturas para empacotamento de matrizes e strings de código não gerenciado para gerenciado.Observe que alguns destes exemplos usam o MarshalAsAttribute.
Dados para empacotar |
Estrutura não gerenciada (C++) |
Estrutura gerenciada (C#) |
---|---|---|
Matriz de inteiros |
|
|
Matriz de caracteres |
|
|
Matriz de caracteres para string |
|
|
Ponteiro para string |
|
|
Especificando um layout de estrutura
Você pode especificar como layout de estruturas para a plataforma empacotador da invocação com o StructLayoutAttribute atributo. O .NET Compact estrutura suporta todos os três LayoutKind valores de enumeração: Auto (padrão) Sequential, e Explicit.
No .NET Compact estrutura, Auto é equivalente a Sequential.
Quando um Explicit valor for especificado, um FieldOffsetAttribute atributo deve ser aplicado a cada campo. Os valores dos bytes devem estar dentro do limite do tipo.Por exemplo, inteiros de 2 bytes devem iniciar em endereços pares, inteiros de 4 bytes devem iniciar em endereços divisíveis por 4, e assim por diante.
Observe que o StructLayoutAttribute.Pack Não há suporte para o campo.