我想调用一个API,它有一个参数是[out]型 LPVOID lpbuf。
使用C#如何得到lpbuf的内容呢?
最好有代码。

解决方案 »

  1.   

    byte[] vBuffer = new byte[1024];
    IntPtr vAddress = /* TODO */; //lpbuf
    Marshal.Copy(vAddress, vBuffer, 0, 1024);
      

  2.   

    把这个API说出来多好嘛
    不同的有不同的定义
      

  3.   

    同zswang(伴水清清)(专家门诊清洁工).
    是在不行你用unsafe代码也行.
      

  4.   

    byte[] vBuffer = new byte[dwSize];
     IntPtr vAddress = lpstr;
     Marshal.Copy(vAddress, vBuffer, 0, dwSize);                    
    使用上面的代码后,vBuffer是空的。
      

  5.   

    LPVOID lpbuf返回一个字符串。
      

  6.   

    byte[] vBuffer = new byte[dwSize];
    IntPtr vAddress = Marshal.ReadIntPtr(lpstr); //怀疑lpstr是指针的指针,这样测试一下
    Marshal.Copy(vAddress, vBuffer, 0, dwSize);还原字符串的时候还需要根据具体编码,如:
    Text = Encoding.Default.GetString(vBuffer);
      

  7.   

    谢谢zswang(伴水清清)(专家门诊清洁工),成功了。