参数和缓冲区的问题?

KEIGOliye 2003-07-09 05:26:31
在VC中做的xboxdll.dll,在VB中调用,其中有个函数RecvMsgCSP,参数:

参数名 数据类型 说明
p_MaxRecv byte 最多接收到短消息的条数
p_Buffer void * 存放返回结果的缓冲区
函数返回接收到服务请求和发送结果的条数

VC的示例程序是用了两个结构Deliver和Result。

函数说明中函数作用是接收一条或多条Deliver和Result

三个结构Deliver、DeliverCSp、Result和两个联合Receive、ReceiveCSP.
如下:
struct Deliver
{
byte RecvType;
byte SrcNo[22];
byte TpUid;
byte TpUdhi;
byte Encoded;
word MsgLength;
byte Msg[162];
};
struct DeliverCSP
{
byte RecvType;
byte SrcNo[22];
byte SPNumber[22];
byte TpUid;
byte TpUdhi;
byte Encoded;
word MsgLength;
byte Msg[162];
};
struct Result
{
byte RecvType;
unsigned Oid;
unsigned CurrTimes;
byte SendTime[15];
byte SendMode[9];
byte DestNo[22];
byte State;
byte ChargeNo[22];
byte Reserve[111];
};

union Receive
{
struct Deliver st_Deliver;
struct Result st_Result;
};
union ReceiveCSP
{
struct DeliverCSP st_Deliver;
struct Result st_Result;
};




在VB模块中定义如下:
Declare Function RecvMsgCSP Lib "xboxdll.dll" (ByVal MaxRecv As Byte, ByVal Buffer As String) As Integer

VB中调用为i=RecvmsgCSP(10,Buffer)

如何在VB中分别把缓冲区中的每一条的数据分别读出来或读出Buffer的值?
...全文
38 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KEIGOliye 2003-07-10
  • 打赏
  • 举报
回复
但是string什么都接收不到~空的~
Alicky 2003-07-10
  • 打赏
  • 举报
回复
你要在DLL写个方法。
这个方法用于读取你要的数据。
boywang 2003-07-10
  • 打赏
  • 举报
回复
呵呵,你有难了。这么多的参数,而且在vb中要重新定义 。。。。。
of123 2003-07-09
  • 打赏
  • 举报
回复
Buffer传递的是什么?如果是结构,就要在VB中声明Type,然后在函数声明中也声明成对应的Type。
用string接收,只能是一串乱码。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧