我正在尝试复制使用 Wireshark 捕获的以下 URB_CONTROL 数据包:
0000 80 87 11 fe f2 8a ff ff 53 02 00 02 03 00 00 00 ........S.......
0010 05 30 25 5b 00 00 00 00 1c 84 02 00 8d ff ff ff .0%[............
0020 08 00 00 00 08 00 00 00 21 09 b3 02 02 00 08 00 ........!.......
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0040 b3 23 00 00 00 00 00 00
但是,我遇到了一个例外:
Exception in thread "main" javax.usb.UsbPlatformException: USB error 1: Unable to submit control message: Input/Output Error
at org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39)
at org.usb4java.javax.AbstractIrpQueue.processControlIrp(AbstractIrpQueue.java:229)
at org.usb4java.javax.ControlIrpQueue.processIrp(ControlIrpQueue.java:41)
at org.usb4java.javax.ControlIrpQueue.processIrp(ControlIrpQueue.java:18)
at org.usb4java.javax.AbstractIrpQueue.process(AbstractIrpQueue.java:104)
at org.usb4java.javax.AbstractIrpQueue$1.run(AbstractIrpQueue.java:73)
at java.base/java.lang.Thread.run(Thread.java:844)
我正在使用以下 Java 代码:
UsbDevice mouse = findDevice(UsbHostManager.getUsbServices().getRootUsbHub(), (short) 0x1EA7, (short) 0x002d);
mouse.getActiveUsbConfiguration().getUsbInterface((byte) 1).claim(new UsbInterfacePolicy() {
public boolean forceClaim(UsbInterface usbInterface) {
return true;
}
});
UsbControlIrp irp = mouse.createUsbControlIrp((byte) 0x21, (byte) 9, (short) 0x02b3, (short) 0x0002);
irp.setData(new byte[] {(byte) 0xb3, 0x20, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00});
// Exception happens in statement under here.
mouse.syncSubmit(irp);
知道是什么原因造成的吗?我在网上搜索过,但没有结果。