我们有第三方程序可以从Android下载,删除和上传* .db文件到Windows。一切工作都很完美但是使用Windows 10 1703,上传停止工作(我的意思是从Windows 10到Android设备)。我的错误是法语,但翻译必须是:“尝试读取或写入受保护的内存。这通常是[...]”。奇怪的是,下载和删除仍然有效。哦,一切都适用于Windows 10 1607.
错误弹出行:“targetStream.Write(buffer,(int)optimalTransferSizeBytes,pcbWritten);”
我想在我的Android Devide上的许多文件夹中上传文件,但没有任何效果。另外,我尝试了几种类型的设备,LG手机,S7手机,CT4设备。
我正在研究手机权限和Windows 10权限,尝试使用管理员权限或兼容模式运行。但我无法理解为什么它停止工作。
我真的迷路了,一些答案或指南可能非常有用。非常感谢!
使用PortableDeviceApiLib.dll:
有上传代码(从Windows到Android)public void TransferContentToDevice(string fileName,string parentObjectId) {
IPortableDeviceContent content;
this._device.Content(out content);
parentObjectId = parentObjectId + "";
IPortableDeviceValues values =
GetRequiredPropertiesForContentType(fileName, parentObjectId);
PortableDeviceApiLib.IStream tempStream;
uint optimalTransferSizeBytes = 0;
content.CreateObjectWithPropertiesAndData(
values,
out tempStream,
ref optimalTransferSizeBytes,
null);
System.Runtime.InteropServices.ComTypes.IStream targetStream =
(System.Runtime.InteropServices.ComTypes.IStream)tempStream;
try
{
using (var sourceStream =
new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[optimalTransferSizeBytes];
int bytesRead;
do
{
bytesRead = sourceStream.Read(buffer, 0, (int)optimalTransferSizeBytes);
IntPtr pcbWritten = IntPtr.Zero;
if (bytesRead < (int)optimalTransferSizeBytes)
{
targetStream.Write(buffer, bytesRead, pcbWritten);
}
else
{
targetStream.Write(buffer, (int)optimalTransferSizeBytes, pcbWritten);
}
} while (bytesRead > 0);
}
targetStream.Commit(0);
}
finally
{
Marshal.ReleaseComObject(tempStream);
}
}