我在 TI814X 评估板上使用 Meego 的 MTP 代码(Buteo MTP = 守护进程 + functionfs)。连接到 Win7 时,它被检测为可移植设备,并要求我打开资源管理器。但在 WinXP 上,它被检测为数字相机,因此我被要求打开扫描和图像编辑器,而资源管理器图标是一个相机。
准备工作:我已将设备类型设置为 0x03(“可移植设备”)。我为我的设备指定了一个唯一的名称,并在每次尝试从注册表中删除所有出现的该名称之前(否则我的更改不会出现在 Windows 上)。
我将“USB View”的输出与我的三星 Galaxy 手机进行了比较,我发现的唯一区别是 bDeviceProtocol,它被手机设置为“1”(相对于 specification of PTP )。将此值应用于我的硬件没有什么区别。
打开硬件管理器时,我可以列出兼容ID
。在这些 ID 中,三星手机列出了
USB\MS_COMP_MTP
USB\Class_06&SubClass_01&Prot_01
USB\Class_06&SubClass_01
USB\Class_06
虽然我的设备缺少第一个条目:
USB\Class_06&SubClass_01&Prot_01
USB\Class_06&SubClass_01
USB\Class_06
此外,移动设备的服务是 WUDRFd
,而我的设备的服务只有 usbscan
。
问题:MS_COMP_MTP
是通过什么触发的?它是我的 USB/MTP 配置的一个选项还是由 vencor/产品 ID 触发?如何让我的设备使用 WUDRFd
而不是 usbscan
?
最佳答案
有一个名为“Microsoft OS Descriptor”的数据结构。这可以通过设备传输到 Windows 并导致此“MS_COMP_MTP”标志。
当前的 Windows 版本确实可以在没有此描述符的情况下检测 MTP - 但 Windows XP still needs it .
感谢 Peter information .
关于linux - 通过 WinXP 上的 MTP - 数码相机而不是可移植设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292737/