Получить точку монтирования устройства WPD
Я некоторое время работал с WPD API и, похоже, столкнулся с проблемой за проблемой.
Как только я исправляю одну проблему, появляется другая. Но это жизнь.
Я пытался определить, является ли устройство WPD запоминающим устройством или телефоном или чем-то еще.
Оказывается, что такие устройства, как iPhone, не предназначены для распознавания как телефон, а как универсальное устройство с точки зрения WPD_DEVICE_TYPE
,
Но он представлен Windows как устройство хранения.
При подключении внешних жестких дисков, устройств чтения карт памяти SD и других более традиционных устройств хранения они распознаются также API-интерфейсом WPD, но они также получают выделенную точку монтирования в Windows.
Если я подключу внешний жесткий диск, у него будет один объект функциональной категории, а значением этого объекта будет путь к этому диску, скажем, E:
,
Ницца. Большой!
Итак, мой вопрос: как я могу как-то прочитать, если на устройстве WPD есть точка монтирования? Конечно, функциональный объект указывает, что он у него есть, но возможно ли, что может быть ориентировочное значение, которое указывает, что точка монтирования доступна?
1 ответ
Проверьте идентификаторы устройств, вот пример их различия:
\\? \ SWD #wpdbusenum#_??_ USBSTOR # диск &ven_usb&prod_flash_disk&rev_1100#aa04012700007404&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}#{6ac27878-a6fa-4155-ba85-f98f491d4f33
против
USBSTOR\DISK&VEN_USB&PROD_FLASH_DISK&REV_1100\AA04012700007404&0
Верхний - это Id, полученный из PortableDeviceManagerClass (первый шаг для создания объекта PortableDevice), нижний я только что прочитал из диспетчера устройств, но его легко получить с помощью одного из следующих решений:
Как получить уникальный идентификатор для устройства в Windows 10 Universal?
https://sourceforge.net/projects/sharpdevelop/files/SharpUSBLib/