我刚开始使用libusbdotnet。我已从http://libusbdotnet.sourceforge.net/V2/Index.html下载了示例代码。
我正在使用 JetFlash 4GB闪存驱动器(为此驱动器添加了libusb-win32过滤器驱动程序)。
ShowInfo代码工作正常,我可以看到我的设备信息有两个端点。以下是来自pastebin的设备信息
但是,ReadOnly示例代码不起作用。
我的代码与libsubdotnet网站上的代码几乎相同。我只更改了UsbEndpointReader使用的端点。 我已将它从Ep01更改为Ep02 ,因为我读到第一个端点是用于配置,访问控制和类似内容的控制端点。
UsbEndpointReader reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep02);
我总是收到消息“没有更多的字节!”。
我认为这是因为没有数据,所以我使用了ReadWrite示例代码。
但在这里我也得到“没有更多的字节!”消息。
有趣的是,该行
ec = writer.Write(Encoding.Default.GetBytes(cmdLine), 2000, out bytesWritten);
执行没有错误。
笔式驱动器可用于读写操作吗?或者代码有问题吗?
答案 0 :(得分:1)
USB拇指驱动器实现USB大容量存储设备类,它是SCSI的一个子集。规范是here。
通过从端点读取,您不会得到任何合理的东西 - 您必须发送适当的命令才能获得任何响应。
你还没有选择一个简单的设备类来开始你的USB探索 - 你可能会更容易开始 - 一个HID类设备,也许(鼠标/键盘)虽然Windows确实增强了鼠标和键盘周围的安全性阻止你安装过滤器。
如果你在Windows上安装驱动器时干扰USB记忆棒上的文件系统,你几乎肯定会遇到缓存一致性问题,除非你非常小心你允许Windows做什么样的访问