如何将LPVOID转换为C#数据类型?

erdgzw 2007-05-07 04:02:36
我想调用一个API,它有一个参数是[out]型 LPVOID lpbuf。
使用C#如何得到lpbuf的内容呢?
最好有代码。
...全文
616 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
erdgzw 2007-05-08
  • 打赏
  • 举报
回复
谢谢zswang(伴水清清)(专家门诊清洁工),成功了。
王集鹄 2007-05-08
  • 打赏
  • 举报
回复
byte[] vBuffer = new byte[dwSize];
IntPtr vAddress = Marshal.ReadIntPtr(lpstr); //怀疑lpstr是指针的指针,这样测试一下
Marshal.Copy(vAddress, vBuffer, 0, dwSize);

还原字符串的时候还需要根据具体编码,如:
Text = Encoding.Default.GetString(vBuffer);
erdgzw 2007-05-08
  • 打赏
  • 举报
回复
LPVOID lpbuf返回一个字符串。
erdgzw 2007-05-08
  • 打赏
  • 举报
回复
byte[] vBuffer = new byte[dwSize];
IntPtr vAddress = lpstr;
Marshal.Copy(vAddress, vBuffer, 0, dwSize);
使用上面的代码后,vBuffer是空的。
ChrisAK 2007-05-07
  • 打赏
  • 举报
回复
同zswang(伴水清清)(专家门诊清洁工).
是在不行你用unsafe代码也行.
cby1990 2007-05-07
  • 打赏
  • 举报
回复
把这个API说出来多好嘛
不同的有不同的定义
王集鹄 2007-05-07
  • 打赏
  • 举报
回复
byte[] vBuffer = new byte[1024];
IntPtr vAddress = /* TODO */; //lpbuf
Marshal.Copy(vAddress, vBuffer, 0, 1024);
erdgzw 2007-05-07
  • 打赏
  • 举报
回复
up

110,571

社区成员

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

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

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