0

我在 Windows 服务中使用 WPD(Windows 便携式设备)API,将文件从 mtp 设备上的文件夹传输到硬盘上的指定文件夹。

出于测试目的,我在 mtp 设备上的文件夹下创建 xyzdata.txt 文件。因此,当代码达到它执行此操作的点时:

    hr = content->Properties(&properties);
    if (SUCCEEDED(hr))
    {
        hr = GetStringValue(properties.Get(),
             selection,
             WPD_OBJECT_ORIGINAL_FILE_NAME,
             &originalFileName);
    }

'hr' 填充有“ERROR_BUSY”,并且根本没有设置 originalFileName。是否有可能没有为某些对象设置 WPD_OBJECT_ORIGINAL_FILE_NAME 的原因,或者它是检索数据的问题?

任何帮助都将是无价的。如果您需要更多代码,我将在此处发布。

编辑:

错误代码是,

hr = HRESULT_FROM_WIN32(ERROR_BUSY) : 请求的资源正在使用中

此外,该设备是安卓设备。有时当我们将 USB 电缆插回时,文件名可用。但这种情况很少见。请让我知道发生了什么

4

1 回答 1

0

找到了解决方案。

问题是在我调用 GetStringValue() 之前,GetStream() 调用没有完成。

因为,GetStringValue() 函数调用对 GetStream() 没有任何依赖,我只是对它们重新排序,瞧,一切都开始工作了。

于 2015-12-15T18:57:07.710 回答