vb.net中调用VC++6做的DLL的问题?
在VC++6中做的xboxdll.dll,在VB.net中调用,其中有个函数RecvMsgCSP,参数:
参数名 数据类型 说明
p_MaxRecv byte 最多接收到短消息的条数
p_Buffer void * 存放返回结果的缓冲区
函数返回接收到服务请求和发送结果的条数
VC++6的示例程序是用了两个结构Deliver和Result。
函数说明中函数作用是接收一条或多条Deliver和Result
三个结构Deliver、DeliverCSp、Result和两个联合Receive、ReceiveCSP.
如下:
struct Deliver '结构Deliver,接收到一条服务请求的返回数据格式
{
byte RecvType;'长度1字节
byte SrcNo[22];'长度22字节
byte TpUid;'长度1字节
byte TpUdhi;'长度1字节
byte Encoded;'长度1字节
word MsgLength;'长度22字节
byte Msg[162];'长度161字节
};
struct DeliverCSP '结构DeliverCSP,接收到一条服务请求的返回数据的格式
{
byte RecvType;'长度1字节
byte SrcNo[22];'长度22字节
byte SPNumber[22];
byte TpUid;'长度1字节
byte TpUdhi;'长度1字节
byte Encoded;'长度1字节
word MsgLength;'长度2字节
byte Msg[162];'长度161字节
};
struct Result '结构Result,接收到一条发送结构的返回数据的格式
{
byte RecvType;'长度1字节
unsigned Oid;'长度4字节
unsigned CurrTimes;'长度4字节
byte SendTime[15];'长度15字节
byte SendMode[9];'长度9字节
byte DestNo[22];'长度字节22
byte State;'长度1字节
byte ChargeNo[22];'长度22字节
byte Reserve[111];
};
union Receive '联合Receive,由结构Deliver或者DeliverCSP和结构Result组成
{
struct Deliver st_Deliver;
struct Result st_Result;
};
union ReceiveCSP
{
struct DeliverCSP st_Deliver;
struct Result st_Result;
};
VC++6中的 数据类型定义:
typedef unsigned char *POINTER;
typedef unsigned short int UINT2;
typedef unsigned long int UINT4;
typedef unsigned char byte;
typedef unsigned short word;
在VB.net中定义如下:
<DllImport("xboxdll.dll")> Public Shared Function RecvMsgCSP(ByVal MaxRecv As Byte,
ByVal Buffer As String) As Integer
如何在VB.net中分别把缓冲区中的每一条的数据分别读出来或分别读出Buffer的值?