如何实现ref byte转byte[]



        我们在C#中调用C++dll时,会遇到接收到来自C++dll的数据回调,回调可以向如下定义。问题来了,如何产看ref byte pBuff所指向内存内容呢,pBuff只能看到第一个byte。

通过如下转换既能实现如何实现ref byte转byte[]。(也可以修改回调类型为Intptr,IntPtr->byte[])

        public int Callback(int iHandle, int iType, ref byte pBuff, int iSize, IntPtr pUserData)
        {
            byte[] buf = new byte[iSize];
            unsafe
            {
                fixed (byte* p = &pBuff)
                {
                    using (UnmanagedMemoryStream ms = new UnmanagedMemoryStream((byte*)p, iSize))
                    {
                        ms.Read(buf, 0, buf.Length);
                    } 
                }
            }

      }

你可能感兴趣的:(C#)