检索WPD设备的挂载点

时间:2015-03-22 12:04:17

标签: api delphi wpd mount-point drive-letter

我已经使用WPD API了一段时间了,而且我似乎遇到了问题之后的问题。

一旦我解决了一个问题,就会出现其他问题。但是,嘿,这就是生活。

我一直在尝试确定WPD设备是存储设备还是电话等等。

事实证明,iPhone等设备未被设置为手机,而是WPD_DEVICE_TYPE的通用设备。

但是,它作为存储设备呈现给Windows。

连接外部硬盘,SD存储卡读卡器和其他更常规的存储设备时,它们也可以被WPD API识别,但也可以在Windows中获得专用的挂载点。

如果我连接外部硬盘,它将有一个功能类别对象,该对象的值将是该驱动器的路径,比如E:

尼斯。太好了!

所以我的问题是:如果WPD设备有挂载点,我怎么能以某种方式读取? 当然功能对象表明它有一个,但是可能有一个指示值表明挂载点可用吗?

1 个答案:

答案 0 :(得分:0)

检查设备ID,这里是一个示例,它们有何区别:

\\?\ SWD#wpdbusenum #_ ?? _ USBSTOR#磁盘&安培; ven_usb&安培; prod_flash_disk&安培; rev_1100#aa04012700007404&安培; 0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}#{6ac27878-a6fa-4155-BA85-f98f491d4f33

VS

USBSTOR \ DISK&安培; VEN_USB&安培; PROD_FLASH_DISK&安培; REV_1100 \ AA04012700007404&安培; 0

上面一个是从PortableDeviceManagerClass收集的Id(创建一个PortableDevice对象的第一步),我从设备管理器中读取的较低的一个,但应该可以使用以下解决方案之一轻松检索:< / p>

How do I get a Unique Identifier for a Device within Windows 10 Universal?

https://sourceforge.net/projects/sharpdevelop/files/SharpUSBLib/