Как получить корневой каталог устройства из WPD API?

Я хочу получить все корневые каталоги для USB-устройств MTP (я могу идентифицировать их как GUID) из WPD API. Итак, мой вопрос: как я могу это сделать? Любые фрагменты кода будут оценены.

1 ответ

Полагаю, вам следует прочитать руководство по переносным устройствам Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/dd389005(v=vs.85).aspx поскольку эта задача является обычной и схожей. задачи, описанные здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/dd319330(v=vs.85).aspx и есть пример решения, которое вы можете попробовать скомпилировать и отладить: https://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d

Вкратце, вам нужно создать объект IPortableDeviceContent, а затем вызвать из него метод EnumObjects с идентификатором WPD_DEVICE_OBJECT_ID (это макрос для ROOT текущего устройства).

Таким образом, вы получите идентификаторы объектов, затем вам придется их перебирать и запрашивать свойства (в вашем случае WPD_OBJECT_CONTENT_TYPE) каждого объекта по идентификатору.

Объекты с WPD_OBJECT_CONTENT_TYPE == WPD_CONTENT_TYPE_FOLDER являются папками.

Другие вопросы по тегам