如何为 mtp 设备构建路径(可在文件夹浏览对话框中使用)?

Posted

技术标签:

【中文标题】如何为 mtp 设备构建路径(可在文件夹浏览对话框中使用)?【英文标题】:How to construct path for mtp devices (usable in folder browse dialog)? 【发布时间】:2012-11-07 07:34:38 【问题描述】:

我实现了从 windows pc 到 android 设备的文件传输,该设备通过 MTP 连接到计算机。复制实现已准备就绪(我使用了此示例:http://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d)。

现在我想改进 UI,我想提供一个文件夹选择对话框,用户可以在其中选择一个 MTP 设备文件夹,我将在其中保存文件(带有 FOS_PICKFOLDERS 的 CLSID_FileOpenDialog 效果很好)。请注意,简单的文件保存对话框不起作用,因为您会从对话框中收到错误消息:“您无法在此处保存”。

文件夹浏览的结果会是这样的: :: 20D04FE0-3AEA-1069-A2D8-08002B30309D \\?\ USB#vid_04e8&pid_6860&MI_00#6&2296b879&0&0000#6ac27878-a6fa-4155-BA85-f98f491d4f33 \ SID- 10001,SECZ9519043CHOHB,12635222016 01B8016B-0164-00F2 -E100-55012C014001

usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#6ac27878-a6fa-4155-ba85-f98f491d4f33 我知道这是设备,IPortableDeviceManager 使用它作为设备 ID。

SID-10001,SECZ9519043CHOHB,12635222016\01B8016B-0164-00F2-E100-55012C014001 这是设备上的路径。这些 GUID 是设备对象的 WPD_OBJECT_PERSISTENT_UNIQUE_ID 属性。

有了这些信息,我可以选择设备并在设备中找到文件夹,这样我就可以进行复制了。

我的问题是我也想在设备上的文件夹浏览对话框中选择一个默认目录,但我无法创建上面提到的路径。请注意,如果我将其作为默认路径,它将在正确的文件夹中开始浏览。

有问题的部分是我无法获得的起始 GUID: ::20D04FE0-3AEA-1069-A2D8-08002B30309D

我还查看了注册表。我只在一个条目中找到了这个 GUID: HKEY_USERS\S-1-5-21-2044730494-4069800027-1247311059-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID20D04FE0-3AEA-1069-A2D8-08002B30309D\DefaultIcon 这是哪个值: C:\Windows\System32\imageres.dll,-109 (CLSID子文件夹包含更多的GUID,所以我找不到,哪个是正确的)

你知道如何让这个 GUID 能够构建整个默认路径吗?

【问题讨论】:

【参考方案1】:

该 guid 代表计算机文件夹,MTP 设备的外壳命名空间扩展是计算机文件夹委托。您可以将此 guid 用作常量来构造文件夹浏览器的解析名称。

问候, 丽莎

【讨论】:

当我只使用那个 GUID 时,我已经进入了 MTP 文件夹 :)

以上是关于如何为 mtp 设备构建路径(可在文件夹浏览对话框中使用)?的主要内容,如果未能解决你的问题,请参考以下文章

Detox:如何为 Detox 配置提供 bitrise 构建路径以在 bitrise 上测试 E2E

如何为 webapp 构建 phonegap 应用程序?

如何为通用 ios 设备构建 Webrtc ios?

如何为 android 构建 boost::locale

我应该如何为 linux 内核模块构建设置额外的包含路径?

如何管理 MTP 便携式设备上的文件?