WPD MTP数据流挂在Release上

时间:2012-11-21 22:58:22

标签: winapi com wpd mtp

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

症状是,在通过Release功能获得的IStream接口上呼叫IPortableDeviceResources::GetStream时,Release呼叫偶尔会挂起,直到设备断开连接才会返回来自PC。

经过一些实验,我发现只要读取了整个流内容,就会发生永远不会。但是如果流只是被部分读取(比如文件的第一个256Kb),它可能看似随机发生(尽管很频繁)。

这已经通过iPhone和Windows Phone 8手机重现,所以它似乎不是特定于设备的。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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