有USB/IP工具允许通过TCP / IP网络共享USB设备 . USB设备连接到运行TCP服务器的Linux PC和运行连接到Linux的VHCI驱动程序的Windows PC . 这种方法可以在没有硬件的情况下模拟任何USB设备 . 您只需编写TCP服务器即可处理USB请求 . (如here)
但它模拟设备的问题并不是真的正确 . 当您尝试使用 libusb 列出连接的USB设备时,您将收到错误'unlisted ancestor for..',因为模拟设备在设备树中没有父设备 . 另一方面,某些工具如Zadig显示模拟设备 .
正确的问题讨论here并没有提供真正的解决方案 .
所以问题是USB / IP Windows驱动程序中的错误?有没有经验丰富的Windows驱动程序开发有帮助?有关父设备的优惠是什么?为什么这么重要?
任何提示都将非常感激!非常感谢您提供任何帮助
UDPATE:技术问题是libusb无法将仿真设备(USB / IP枚举器)的父节点识别为HUB . 这使得模拟设备因NULL父项而被忽略 . 所以问题是如何修补USB / IP驱动程序,以便libusb将其视为普通的USB HUB
1 回答
问题是USB / IP Windows驱动程序v0.2.0.0没有回复IRP_MN_QUERY_CAPABILITIES IRP . 它仅调度针对模拟设备的IRP_MN_QUERY_CAPABILITIES,但不调度到总线驱动程序本身 . 我已将IRP_MN_QUERY_CAPABILITIES处理添加到USB / IP驱动程序,现在它被 libusb 检测为普通USB HUB设备 .
UPD:
在pnp.c里面的方法
我在
switch (IrpStack->MinorFunction)
里面添加了新的'case':UPD2: and also this: