Calcular referencias de estructuras en .NET Compact Framework
Actualización: noviembre 2007
Puede incrustar matrices y cadenas en estructuras para calcular referencias. Debe utilizar el atributo MarshalAsAttribute para especificar cómo desea calcular las referencias de las cadenas incrustadas; en caso contrario, se produce una excepción.
Al calcular la referencia de una cadena a un wchar_t*, puede especificar alguno de los siguientes atributos, que calculará la referencia como puntero a una cadena Unicode:
[MarshalAs(UnmanagedType.LPWStr)]
O bien
[MarshalAs(UnmanagedType.LPTStr)]
La tabla siguiente muestra las definiciones de estructura para calcular referencias a las matrices y cadenas desde código administrado a no administrado. Observe que algunos de estos ejemplos utilizan MarshalAsAttribute.
Datos para los que se van a calcular referencias |
Estructura no administrada (C++) |
Estructura administrada (C#) |
---|---|---|
Matriz de enteros |
|
|
Matriz de caracteres |
|
|
Matriz de caracteres a cadena |
|
|
Puntero a cadena |
|
|
Especificar un diseño de estructura
Puede especificar cómo diseñar estructuras para el contador de referencias de invocación de plataforma con el atributo StructLayoutAttribute. .NET Compact Framework admite los tres valores de la enumeración LayoutKind: Auto (valor predeterminado), Sequential y Explicit.
En .NET Compact Framework, Auto es equivalente a Sequential.
Cuando se especifica un valor de Explicit, se debe aplicar un atributo FieldOffsetAttribute a todos los campos. Los valores de byte deben encontrarse entre los límites del tipo. Por ejemplo, los enteros de 2 bytes se deben iniciar en direcciones exactas, los enteros de 4 bytes se deben iniciar en direcciones divisibles por 4, etc.
Observe que no se admite el campo StructLayoutAttribute.Pack.
Vea también
Otros recursos
Compatibilidad con el cálculo de referencias en .NET Compact Framework