我已经使用WPD API一段时间了,我似乎遇到了一个又一个问题。
一旦我解决了一个问题,就会出现其他问题。但嘿,这就是生活。
我一直在尝试确定WPD设备是存储设备还是手机或其他什么。
事实证明,像iPhone这样的设备并没有被设置为被识别为手机,而是被设置为WPD_DEVICE_TYPE
的通用设备。
但是,它是作为存储设备提供给Windows的。
当连接外部硬盘驱动器、SD读卡器和其他更传统的存储设备时,它们也会被WPD API识别,但它们也会在Windows中获得专用装载点。
如果我连接一个外部硬盘驱动器,它将有一个功能类别对象,该对象的值将是该驱动器的路径,比如E:
。
不错。太棒了
所以我的问题是:如果WPD设备有一个安装点,我该如何读取?当然,功能对象表明它有一个,但是否可能存在一个指示值,说明装载点可用?
检查设备ID,下面是它们的区别示例:
\\?\swd#wpdbusenum#__usbstor#disk&ven_usb&prod_flash_disk;rev_1100#aa04012700007404&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}#{6ac278-a6fa-4155-ba85-f98f491d4f33
与。
USBSTOR\DISK&VEN_USB&PROD_FLASH_DISK&REV_1100\AA004012700007404&0
上面的一个是从PortableDeviceManagerClass收集的Id(创建PortableDevice对象的第一步),下面的一个我刚刚从设备管理器中读取,但它应该可以通过以下解决方案之一轻松检索:
如何在Windows 10 Universal中获得设备的唯一标识符?
https://sourceforge.net/projects/sharpdevel/files/SharpUSBLib/