求助!关于调用非托管Dll函数的问题~100分送上!!
dll引用的定义:
public struct stSchBaseInfo
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=5 )]
public byte[] szDepot;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=9 )]
public byte[] szNo;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=21 )]
public byte[] szName;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=6 )]
public byte[] szTime;
public byte szNature;
public byte szType;
public byte szFaretype;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=21 )]
public byte[] szLevel;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=7 )]
public byte[] szStCode;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=21 )]
public byte[] szStName;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=21 )]
public byte[] szTStation;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=101 )]
public byte[] szSeat;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=21 )]
public byte[] szArea;
public System.UInt32 iTickets;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=5 )]
public byte[] szAreaDepot;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=5 )]
public byte[] szOwnerDepot;
}
[DllImport("kplwlib.dll")]
unsafe private static extern uint SchBaseInfo(byte *szDate,byte *szStation,byte *szOwnerDepot,byte *szTime,int *piNum,
[ MarshalAs( UnmanagedType.LPArray, SizeConst=60)] [In,Out] stSchBaseInfo[] SchBaseInfos);
参数说明:*piNum,SchBaseInfos是输出参数,其他的是输入参数;*piNum是SchBaseInfos中的有效元素数。
问题说明:
调用此dll函数后,可以返回数据,并且第一条数据是正确的,但是接下来的其他数据都比上一条数据向前偏移了2个字节,如何解决这个问题?请各位高手帮下忙,在这里先谢谢了!