2

我刚刚开始使用 libusbdotnet。我已经从http://libusbdotnet.sourceforge.net/V2/Index.html下载了示例代码。

我正在使用JetFlash 4GB 闪存驱动器(为此驱动器添加了 libusb-win32 过滤器驱动程序)

ShowInfo 代码完美运行,我可以通过两个端点查看我的设备信息。以下是来自 pastebin 的设备信息

http://pastebin.com/2Jdph6bY

但是,ReadOnly 示例代码不起作用。

http://pastebin.com/hNZaEt8N

我的代码与 libsubdotnet 网站上的代码几乎相同。我只更改了 UsbEndpointReader 使用的端点。我已将其从 Ep01 更改为 Ep02,因为我读到第一个端点是用于配置、访问控制和类似内容的控制端点。

UsbEndpointReader reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep02);

我总是收到“没有更多字节!”的消息。

我认为这是因为没有数据,所以我使用了 ReadWrite 示例代码。

http://pastebin.com/NiN5w9Jt

但在这里我也得到“没有更多的字节!” 信息。

有趣的是,这条线

ec = writer.Write(Encoding.Default.GetBytes(cmdLine), 2000, out bytesWritten);

执行没有错误。

笔式驱动器可以用于读写操作吗?还是代码有问题?

4

1 回答 1

1

USB 拇指驱动器实现了 USB 大容量存储设备类,它是 SCSI 的子集。规范在这里

仅仅从端点读取你不会得到任何明智的东西——你必须发送适当的命令来获得任何响应。

您还没有选择一个简单的设备类来开始您对 USB 的探索 - 您最好从更简单的东西开始 - HID 类设备,也许是(鼠标/键盘),尽管 Windows 确实增强了鼠标和键盘的安全性,这可能会阻止您安装一个过滤器。

如果您在 USB 记忆棒上的文件系统被 Windows 挂载为驱动器时干预它,您几乎肯定会遇到缓存一致性问题,除非您非常小心您允许 Windows 执行哪种访问。

于 2013-11-30T15:24:52.700 回答