如何将C++中数据类型转换为C#语言写的
typedef struct // 本结构中功能号(function)与操作方式(czfs)是必须的,其它可选
{
unsigned short length; //长度 (整个数据包长度)
unsigned short crc ; //CRC校验码,从serio 开始计算,暂时保留
unsigned short serio; //序列号(按请求划分,从1开始)
unsigned char function; //功能号
unsigned char czfs; //操作方式(与柜台中的设置相同)
unsigned long status; //状态 0正确 其他错误(应答有效)
}tagBLOCK_HEAD;
typedef struct
{
tagBLOCK_HEAD HEAD; //头信息
char KHBSLX; // '0'-'9'交易所代码(参看柜台设置)
// 'Z' 资金帐号
// 'C' 磁卡号
char KHBS[31]; //KHBS 股东代码或资金帐号或磁卡号
char JYMM[11]; //JYMM 交易密码
}tagMMJY_Request;
typedef union
{
tagBLOCK_HEAD head;
tagMMJY_Request mmjy;
}tagREQUEST;
int WINAPI KDAPI_Request_MT(tagREQUEST &request, int nConnectionNo, unsigned int *sClientSocket=NULL);
以上是金证3.2接口部分数据结构,请问哪位高手能用C#语言给出其对应数据类型
------解决方案--------------------
tagREQUEST and tagMMJY_Request are the same thing.
C# code
[StructLayout(LayoutKind.Sequential)]
struct BLOCK_HEAD
{
ushort length; //长度 (整个数据包长度)
ushort crc ; //CRC校验码,从serio 开始计算,暂时保留
ushort serio; //序列号(按请求划分,从1开始)
byte function; //功能号
byte czfs; //操作方式(与柜台中的设置相同)
uint status; //状态 0正确 其他错误(应答有效)
}
[StructLayout(LayoutKind.Sequential)]
struct MMJY_Request
{
BLOCK_HEAD HEAD; // 头信息
char KHBSLX; // '0'-'9'交易所代码(参看柜台设置)
// 'Z' 资金帐号
// 'C' 磁卡号
[MarshalAs(UnmanagedType.ByValArray, SizeConst=31)]
byte[] KHBS; // KHBS 股东代码或资金帐号或磁卡号
[MarshalAs(UnmanagedType.ByValArray, SizeConst=11)]
byte[] JYMM; // JYMM 交易密码
}
[DllImport("...")]
extern static int KDAPI_Request_MT(ref MMJY_Request request, int nConnectionNo, ref uint sClientSocket);
------解决方案--------------------
楼上正确。