Как перечислить все диски, даже мобильные телефоны, подключенные к вашему компьютеру?
Вопрос очень прост, я хочу перечислить все диски на моем компьютере.
Мы все знаем, как перечислить диски с:
DriveInfo.GetDrives();
Directory.GetLogicalDrives();
Но что, если мне нужно указать свой CELLPHONE в качестве диска, я могу увидеть его в проводнике, так почему же нет в списке в результате этих 2 методов?
Я проверил этот метод с 2 видами мобильных телефонов.
- Android: LG G4 Stylus LTE (внутренняя и SD-карта, поэтому здесь у вас 2 накопителя)
- Windows phone: Lumia 1020 (без SD-карты)
Тем не менее, никакого результата.
Помогите, пожалуйста!
1 ответ
Эти мобильные телефоны - не диски, а устройства WPD.
Если вы хотите перечислить их, Windows включает в себя COM API для этого.
То же самое можно сделать и без C++, в C#, используя COM-взаимодействие. Это займет некоторое время для настройки (вам нужно будет сослаться на две библиотеки типов COM, PortableDeviceApiLib и PortableDeviceTypesLib, и обойти некоторые проблемы с импортером библиотеки типов COM), а также для изучения API, но однажды я сделал это для некоторого клиента, решения работал нормально.
Однако если вам нужны не только устройства MTP, но и все, что Windows Explorer показывает в разделе "Этот компьютер" (может быть что угодно, некоторые сторонние приложения или драйверы регистрируют свои собственные расширения оболочки, добавляя материал в "Этот компьютер"), тогда вы будете нужен совершенно другой API, но опять же это COM API. Windows предоставляет интерфейс IShellFolder для перечисления содержимого.
Вот статья о чем-то похожем в C#.