我在回调函数中想获取参数的值,如何实现?代码如下:
函数原型:void (CALLBACK *fMessCallBack)(int *pBuf) 
//pBuf[0]=2,pBuf[1]=3
public static void fMessCallBack(ref int pBuf) //C#中回调函数处理
{
//这里如何获取值“2”和“3”?
}

解决方案 »

  1.   

    delegate void MessCallBack(ref int pbuf);
    MessCallBack CallBack = new MessCallBack(fMessCallBack);
    ..
    public static void fMessCallBack(ref int pBuf) //C#中回调函数处理
    {
    //这里如何获取值“2”和“3”?
    }
      

  2.   

    public static void fMessCallBack(ref int pBuf) //C#中回调函数处理 

    //这里如何获取值“2”和“3”? 
    int a=pBuf;//这里a的值是收地址中的值,我想把后边地址中的值一块都读出来,该怎么写?
    }
      

  3.   

    不知道对不对...byte[] _Temp =new byte[2];
                System.Runtime.InteropServices.Marshal.Copy(new IntPtr(a), _Temp, 0, 2);
      

  4.   

    应该是int数组 不过这个函数写的不好应该有返回的数据尺寸信息
    try
    用System.IntPtr
    public static void fMessCallBack(intptr buf )
    {
      for( int i=0;i<3;i++)
      {
       int temp = Marshal.ReadInt32 ( buf,i*4);
      }
    }
      

  5.   

    pBuf应该是整形数组,数组参数直接用数组对象封送就行了public delegate void MessCallBack(int[] pBuf);public void fMessCallBack(int[] pBuf)
    {
        foreach(int i in pBuf)
           . . .
    }
      

  6.   

    See http://msdn.microsoft.com/en-us/library/hk9wyw21(VS.80).aspx