バイト配列を構造体型に変換する必要があります。これを行うには、デスクトップ プロジェクト アプリケーションに次のコードを使用します。
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;
SFHeader
私の構造はどこにありますか。
問題は、次の行です。
str = (SFHeader)Marshal.PtrToStructure(ptr, typeof(SFHeader));
NotSupportedException
このコードをスマート デバイス プロジェクトから実行すると、 がスローされます。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;
}