如何使用 Windows 便携式设备 C++ API 获取 MTP 设备公开的文件夹中所有文件(对象)的列表?

How to get the list of all the files(objects) in a folder exposed by an MTP device using Windows Portable Devices C++ API?

可以枚举 MTP 设备文件系统中的所有文件,然后获取系统中每个 file/folder 的对象 ID。

我的问题是:

  1. 有没有一种方法可以判断对象是文件还是文件夹?
  2. 找到文件夹后如何获取其中所有文件(对象)的列表?

我查看了 msdn 网站中的程序员参考页面,但没有找到任何相关内容。我错过了什么吗?

谢谢!

  1. 如果对象是文件夹,则使用 IPortableDeviceValues (which you get from the IPortableDeviceProperties::GetValues() method), query for WPD_OBJECT_CONTENT_TYPE. It will return WPD_CONTENT_TYPE_FOLDER

  2. 使用IPortableDeviceContent::EnumObjects()方法,可以枚举任意文件夹对象的内容。