Как создать путь для mtp-устройств (можно использовать в диалоговом окне просмотра папок)?

Я реализовал передачу файлов с ПК с Windows на Android-устройство, которое подключено по MTP к компьютеру. Реализация копирования готова (я использовал этот пример: http://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d).

Теперь я хотел бы улучшить пользовательский интерфейс, я хотел бы предложить диалог выбора папки, где пользователь может выбрать папку устройства MTP, где я сохраню файл (CLSID_FileOpenDialog с FOS_PICKFOLDERS работает хорошо). Обратите внимание, что простое диалоговое окно сохранения файла не работает, потому что вы получите сообщение об ошибке: «Вы не можете сохранить здесь».

Результат просмотра папок будет примерно таким:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\?\usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f9ff3391d4\ -{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 использует его как идентификатор устройства.

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\CLSID{20D04FE0-3AEA-1069-A2D8- 08002B30309D}\DefaultIcon
со значением:
C:\Windows\System32\imageres.dll,-109
(подпапка CLSID содержит больше GUID, поэтому я не могу найти правильный )

У вас есть идея, как заставить этот GUID построить весь путь по умолчанию?


person user1835461    schedule 19.11.2012    source источник


Ответы (1)


Этот guid представляет папку «Компьютер», расширение пространства имен оболочки для устройств MTP является делегатом папки «Компьютер». Вы можете использовать этот guid в качестве константы для создания имени синтаксического анализа для вашего браузера папок.

С уважением, Лиза

person Lisa O    schedule 19.11.2012
comment
Когда я использую только этот GUID, я уже попадаю в папку MTP :) - person Florian Straub; 21.12.2020