为什么我没有得到 mtp 设备上对象的 WPD_OBJECT_ORIGINAL_FILE_NAME(即文件名)
Why am I not getting the WPD_OBJECT_ORIGINAL_FILE_NAME(i.e the filename) of the object on mtp device
我在 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 的原因是什么,还是检索数据有问题?
任何帮助都将是无价的。如果您需要更多代码,我将 post 放在这里。
编辑:
错误代码是,
hr = HRESULT_FROM_WIN32(ERROR_BUSY) : 请求的资源正在使用中。
此外,该设备是 android 设备。有时当我们插入 USB 电缆时,文件名可用。但这种情况很少见。请让我知道发生了什么
找到解决方案。
问题是在我调用 GetStringValue() 之前 GetStream() 调用没有完成。
因为 GetStringValue() 函数调用对 GetStream() 没有任何依赖性,我只是重新排序它们,瞧,一切都开始工作了。
我在 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 的原因是什么,还是检索数据有问题?
任何帮助都将是无价的。如果您需要更多代码,我将 post 放在这里。
编辑:
错误代码是,
hr = HRESULT_FROM_WIN32(ERROR_BUSY) : 请求的资源正在使用中。
此外,该设备是 android 设备。有时当我们插入 USB 电缆时,文件名可用。但这种情况很少见。请让我知道发生了什么
找到解决方案。
问题是在我调用 GetStringValue() 之前 GetStream() 调用没有完成。
因为 GetStringValue() 函数调用对 GetStream() 没有任何依赖性,我只是重新排序它们,瞧,一切都开始工作了。