当前位置: 首页 > 编程语言 > C#

使用WPD将文件复制到Windows Phone C#分享

时间:2023-04-10 10:46:10 C#

C#学习教程:使用WPD复制文件到WindowsPhone按照本教程,我能够连接到电话并将文件从电话复制到计算机:WPD:传输内容但我无法以相反的方式复制文件(计算机到电话)。这是我的代码:IPortableDeviceContent内容;this._device.Content(输出内容);IPortableDeviceValues值=GetRequiredPropertiesForContentType(fileName,parentObjectId);PortableDeviceApiLib.IStream临时流;uintoptimalTransferSizeBytes=0;content.CreateObjectWithPropertiesAndData(值,输出tempStream,refoptimalTransferSizeBytes,null);System.Runtime.InteropServices.ComTypes.IStreamtargetStream=(System.Runtime.InteropServices.ComTypes.IStream)tempStream;尝试{使用(varsourceStream=newFileStream(fileName,FileMode.Open,FileAccess.Read)){varbuffer=newbyte[optimalTransferSizeBytes];intbytesRead;做{bytesRead=sourceStream.Read(buffer,0,(int)optimalTransferSizeBytes);IntPtrpcbWritten=IntPtr.Zero;targetStream.Write(缓冲区,(int)optimalTransferSizeBytes,pcbWritten);}while(bytesRead>0);}targetStream.Commit(0);}最后{Marshal.ReleaseComObject(tempStream);}我在几个设备上测试了这段代码。它适用于普通MP3播放器,假设教程是正确的,它也适用于Android手机。但是在两个不同的Windows手机上运行此代码,我得到以下异常:PortableDevices.exe中发生类型为“System.Runtime.InteropServices.COMException”的未处理异常附加信息:传递给系统调用的数据区域太小。(HRESULT异常:0x8007007A)在这一行中:targetStream.Write(buffer,(int)optimalTransferSizeBytes,pcbWritten);缓冲区大小为262144字节,而文件大小仅为75KB。我希望有人知道如何解决这个问题。问候j0h4nn3s我遇到了同样的问题,结果证明作者犯了一个简单的错误。您正在写入缓冲区的大小而不是您读取的字节数。替换targetStream.Write(buffer,(int)optimalTransferSizeBytes,pcbWritten);以上就是C#学习教程:使用WPD复制文件到WindowsPhoneC#的全部内容分享,如果对大家有用,需要进一步了解C#希望大家多多关注教程——targetStream.Write(缓冲区、字节读取、pcbWritten);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢