首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何枚举MTP和PTP设备

如何枚举MTP和PTP设备
EN

Stack Overflow用户
提问于 2017-08-17 18:55:41
回答 1查看 1.2K关注 0票数 0

This answer解释了如何使用WMI通过驱动器号查找连接的USB大容量存储设备,但我正在尝试查找连接的MTP或PTP设备的名称(或UNC路径),例如连接的相机或没有驱动器号安装的移动设备,以便我可以爬行它们的目录来搜索图像。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2017-08-30 23:48:02

首先,您需要了解,拥有MTP设备名称将不允许您使用用于简单PC文件系统的方法爬行它的目录或搜索图像。它只是Windows资源管理器中的简化视图,而不是事物的真实状态。

我不知道如何用Delphi严格地做到这一点,但是有一个Windows Portable Devices API,它都使用COM,所以我相信有一种方法可以让它在Delphi上也能工作。

你可以尝试的另一种方式是使用libmtp,这是一个普通的C库,你可以通过一些辅助代码明确地从can call中获取它的动态链接库方法。

如果你只想要名字,你可以使用SetupDiGetDeviceRegistryProperty WinApi函数找到所连接的WPD设备(Windows便携设备,它们正在使用MTP和PTP协议)的名字。

首先,你需要用GUID_DEVINTERFACE_WPD调用SetupDiGetClassDevs (它是在PortableDevice.h中定义的,但是你可以在谷歌中找到它

{6AC27878-A6FA-4155-BA85-F98F491D4F33} )

然后使用SetupDiEnumDeviceInfo在设备上迭代,通过CM_Get_Device_ID函数调用从WPD cathegory获取每个设备的id,并使用SPDRP_FRIENDLYNAME (或者SPDRP_DEVICEDESC,也许你应该尝试不同的参数)将其传递给SetupDiGetDeviceRegistryProperty。

有很多使用此函数的示例,例如这个:SetupDiGetDeviceProperty usage example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45733242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档