为什么一个自定义结构类型的指针不能指向一个byte *data
ffb 2004-08-11 06:26:01 C++:
typedef struct
{
unsigned int fid; //
int filelen; //
char pname[MAX_PATH]; //
} NTCMD411;
to C#:
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct NTCMD411
{
public uint fid; //
public int filelen; //
//[MarshalAs(UnmanagedType.LPStr, SizeConst = 255)]
//public string pname; //
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 255)]
public byte[] pname;
};
byte *data=(byte *)cmddata;
NTCMD411 *pNTCMD411=(NTCMD411 *)data;//error
data存放的是数据,我需要从中取出NTCMD411这个结构对应的数据(从数据头的第0字节开始).
我试验了如果结构中不包含数组就什么问题都没有,而我的pname需要保存文件名,这个结构是C++中定义的,我移植到C#.
为什么这个结构的指针不能指向这个数据呢?