为什么我没有在mtp设备上获取对象的WPD_OBJECT_ORIGINAL_FILE_NAME(即文件名)

时间:2015-12-15 13:04:46

标签: winapi windows-services mtp wpd

我在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):请求的资源正在使用

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

1 个答案:

答案 0 :(得分:0)

找到解决方案。

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

因为GetStringValue()函数调用对GetStream()没有任何依赖,所以我只是对它们进行了重新排序,并且它们都开始工作了。