int CeTest(DWORD cbInput, BYTE *pInput, DWORD *pcbOutput, BYTE **pp)

解决方案 »

  1.   

    **pp 是一个指向指针的指针。
    pp 为一个 byte
    *pp指向pp,为pp的地址
    **pp指向*pp,为pp的地址的地址。一般地说,**pp 是一个二维的数组。
    你照样可以用 IntPtr 类型。http://topic.csdn.net/t/20031211/12/2552240.html
      

  2.   

    C#不必要去把c对应来做,如果你真的要在c或c#中互相交互的话,我建议你看一下net的p/invoke,里面就有它们数据类型转换的规则
      

  3.   

    谢谢两位高手,我刚查了好像是使用IntPtr类型:
    int CeTest(
       string pDllPath, 
       string pFunctionName, 
       uint cbInput, 
       IntPtr pInput, 
       out uint pcbOutput, 
       out IntPtr ppOutput, 
       IntPtr ppIRAPIStream, 
       uint dwReserved);
    =======================
    我现在需要将C的这个函数修改成C#的,out IntPtr ppOutput是个指针,如果需要返回一个字符串,这个ppOutput如何赋值呢?研究了半天,这个指针好像只能.zero
      

  4.   

    int CeTest(uint cbInput, IntPtr pInput, out uint pcbOutput, out IntPtr ppOutput)
    这个函数精简一下,前面的两个参数一个是输入字符的长度,一个是输入的字符,后面的两个参数一个是输出的字符的长度,一个是输出的字符。
    比如输入“AB”,这个函数返回“Hello:AB”