C# IntPtr转为结构数组

敌敌畏耶 2013-07-10 03:12:33
这个是接口:
LWNETINTERFACE_API BOOL __stdcall LW_NET_DeviceDiscover(char *pBuf, int *pLen, UINT nTimeWait = 3000);

[out]pBuf: 用户开辟缓存,用来接收 LW_SEARCH_RESULT 结构体,查询到几个设备,就返回几个这样的结构体。
[in/out]pLen:pBuf 缓冲区的长度/返回有效数据长度。单位为字节。
[in]nTimeWait:查询持续时间,单位毫秒。比如 byte数组

我用C# 调用这个接口后,怎么处理这个数据,这个数据明显要分成几个结构的··
请问 怎么搞啊?给点思路··谢谢大家··
...全文
1422 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
敌敌畏耶 2013-07-11
  • 打赏
  • 举报
回复
引用 9 楼 soaringbird 的回复:
[quote=引用 8 楼 yuekunge 的回复:] 小弟 第一次搞这个··能在详细点嘛?
先把LW_SEARCH_RESULT 的C++定义贴上来,最好再有c++的调用代码[/quote] 晕死你··· 我现在的意思 你没明白嘛?
敌敌畏耶 2013-07-11
  • 打赏
  • 举报
回复
引用 11 楼 hdt 的回复:
研究一下marsahl
嗯 已解决··谢谢了··
真相重于对错 2013-07-11
  • 打赏
  • 举报
回复
研究一下marsahl
soaringbird 2013-07-10
  • 打赏
  • 举报
回复
引用 8 楼 yuekunge 的回复:
小弟 第一次搞这个··能在详细点嘛?
先把LW_SEARCH_RESULT 的C++定义贴上来,最好再有c++的调用代码
敌敌畏耶 2013-07-10
  • 打赏
  • 举报
回复
引用 7 楼 soaringbird 的回复:
如果LW_SEARCH_RESULT的字段都是定长的,就好说了. 按照内存布局定义C#版的LW_SEARCH_RESULT,注意C++的char在c#里要用byte。 还有c#版的LW_NET_DeviceDiscover,LW_NET_DeviceDiscover(byte*pbuf,ref int len 然后就可以按照指针的方式读取byte[]的内容了。 byte[] buf=new byte[长度],你说的,用户开辟内存,你先算出设备数和总长度。 fixed(byte* pb=buf) { LW_NET_DeviceDiscover(pb,.....) LW_SEARCH_RESULT* ps=(LW_SEARCH_RESULT*)pb; 第一个设备: *ps 第二个设备:*(ps++) .... }
小弟 第一次搞这个··能在详细点嘛?
soaringbird 2013-07-10
  • 打赏
  • 举报
回复
如果LW_SEARCH_RESULT的字段都是定长的,就好说了. 按照内存布局定义C#版的LW_SEARCH_RESULT,注意C++的char在c#里要用byte。 还有c#版的LW_NET_DeviceDiscover,LW_NET_DeviceDiscover(byte*pbuf,ref int len 然后就可以按照指针的方式读取byte[]的内容了。 byte[] buf=new byte[长度],你说的,用户开辟内存,你先算出设备数和总长度。 fixed(byte* pb=buf) { LW_NET_DeviceDiscover(pb,.....) LW_SEARCH_RESULT* ps=(LW_SEARCH_RESULT*)pb; 第一个设备: *ps 第二个设备:*(ps++) .... }
敌敌畏耶 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 kkun_3yue3 的回复:
char *pBuf, int *pLen, 分别定义char[],int[]传参 之后从这里取结果
还有 师兄 这里怎么要定义 char[],int[] 传参? 难道byte[] 和 int 不行嘛? 这个是C++的接口··我的先翻译为C#的吧···
敌敌畏耶 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 kkun_3yue3 的回复:
char *pBuf, int *pLen, 分别定义char[],int[]传参 之后从这里取结果
我的意思就是 第一个参数回来的就是这个结构体的多个,不过里面有很多··但是我需要一个一个的取出来···请问怎么取?
敌敌畏耶 2013-07-10
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
LW_SEARCH_RESULT 结构体 要另外定义出来 具体的玩意俺们不好说,得看你的情况,所以只能推荐你去看一本书 <精通net互操作> 我案头长摆这本书滴,这书看着未必好看,只是挺实用,互操这块很少有这书不能搞定滴情况
我的意思就是 第一个参数回来的就是这个结构体的多个,不过里面有很多··但是我需要一个一个的取出来···请问怎么取?
wanghui0380 2013-07-10
  • 打赏
  • 举报
回复
LW_SEARCH_RESULT 结构体 要另外定义出来 具体的玩意俺们不好说,得看你的情况,所以只能推荐你去看一本书 <精通net互操作> 我案头长摆这本书滴,这书看着未必好看,只是挺实用,互操这块很少有这书不能搞定滴情况
kkun_3yue3 2013-07-10
  • 打赏
  • 举报
回复
抱谦,要看下LWNETINTERFACE_API 的定义的
kkun_3yue3 2013-07-10
  • 打赏
  • 举报
回复
char *pBuf, int *pLen, 分别定义char[],int[]传参 之后从这里取结果

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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