1

在 Windows 8 下使用 WPD(Windows 便携式设备)API 从与 MTP 兼容的移动设备读取数据时遇到了一个奇怪的问题(尚未尝试任何其他 Windows 版本)。

症状是,在调用通过该函数获取Release的接口时,偶尔会挂起,直到设备与PC断开连接后才返回。IStreamIPortableDeviceResources::GetStreamRelease

经过一些实验,我发现只要读取了流的全部内容,这种情况就不会发生。但如果流仅被部分读取(例如,文件的前 256Kb),它可能看似随机发生(尽管非常频繁)。

这已在 iPhone 和 Windows Phone 8 移动设备上重现,因此它似乎不是特定于设备的。

有没有人遇到过这种问题?更重要的是,除了总是阅读流的全部内容之外,有没有人知道解决它的方法?

谢谢!

4

1 回答 1

2

我发现调用该IPortableDeviceDataStream::Cancel方法似乎可以解决这个问题。

于 2012-11-25T23:53:33.820 回答