Je dois convertir un tableau d'octets en mon type de structure. Pour ce faire, j'utilise le code suivant pour l'application de projet de bureau:Conversion d'un tableau d'octets en structure dans le Compact Framework
var str = new SFHeader();
int size = Marshal.SizeOf(str);
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(buffer, 0, ptr, size);
str = (SFHeader)Marshal.PtrToStructure(ptr, typeof(SFHeader));
Marshal.FreeHGlobal(ptr);
return str;
Où SFHeader
est ma structure.
Le problème est que la ligne:
str = (SFHeader)Marshal.PtrToStructure(ptr, typeof(SFHeader));
jette un NotSupportedException
quand je lance ce code d'un projet de dispositif intelligent. Existe-t-il d'autres méthodes pour effectuer ce travail dans le Compact Framework?
[StructLayout(LayoutKind.Sequential)]
public struct SFHeader
{
internal const int MAX_FILENAME_LENGTH = 32;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_FILENAME_LENGTH)]
public string FileName;
public int Offset;
public short Size;
public byte Flags;
public byte Source;
public long LastWriteTime;
}
Voir modification s'il vous plaît. – Nick
@Nick Hmm .. Avez-vous aussi la définition C de l'en-tête? – Alan
oui, pourquoi? voulez-vous voir la définition C? – Nick