c#调用vc 写的DLL文件时回调函数实现的问题

行万里路7186 2009-03-05 05:04:06
我在回调函数中想获取参数的值,如何实现?代码如下:
函数原型:void (CALLBACK *fMessCallBack)(int *pBuf)
//pBuf[0]=2,pBuf[1]=3
public static void fMessCallBack(ref int pBuf) //C#中回调函数处理
{
//这里如何获取值“2”和“3”?
}
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bomdy 2009-03-05
  • 打赏
  • 举报
回复
pBuf应该是整形数组,数组参数直接用数组对象封送就行了

public delegate void MessCallBack(int[] pBuf);

public void fMessCallBack(int[] pBuf)
{
foreach(int i in pBuf)
. . .
}
whycom 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qdjdl 的回复:]
public static void fMessCallBack //C#中回调函数处理
{
//这里如何获取值“2”和“3”?
int a=pBuf;//这里a的值是收地址中的值,我想把后边地址中的值一块都读出来,该怎么写?
}
[/Quote]
应该是int数组 不过这个函数写的不好应该有返回的数据尺寸信息
try
用System.IntPtr
public static void fMessCallBack(intptr buf )
{
for( int i=0;i<3;i++)
{
int temp = Marshal.ReadInt32 ( buf,i*4);
}
}
zgke 2009-03-05
  • 打赏
  • 举报
回复
不知道对不对...

byte[] _Temp =new byte[2];
System.Runtime.InteropServices.Marshal.Copy(new IntPtr(a), _Temp, 0, 2);
行万里路7186 2009-03-05
  • 打赏
  • 举报
回复
public static void fMessCallBack(ref int pBuf) //C#中回调函数处理
{
//这里如何获取值“2”和“3”?
int a=pBuf;//这里a的值是收地址中的值,我想把后边地址中的值一块都读出来,该怎么写?
}
icehawk 2009-03-05
  • 打赏
  • 举报
回复
delegate void MessCallBack(ref int pbuf);
MessCallBack CallBack = new MessCallBack(fMessCallBack);
..
public static void fMessCallBack(ref int pBuf) //C#中回调函数处理
{
//这里如何获取值“2”和“3”?
}

111,126

社区成员

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

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

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