将Windows USB隐范代码放到libusb



我正在尝试将一些使用hidd_getInputReport的Windows代码移植到Linux使用libusb。从我可以看出的是我需要打电话给USB_Control_msg,但是我在找出要传递的参数时遇到问题。

我追求的报告ID是0x01。这是我到目前为止所拥有的。

#define HID_GET_REPORT  0x01
#define HID_REPORT_TYPE_INPUT  0x01
#define INTERFACE_NUMBER 0x00
int reportId = 0x01;
int bytesSent = usb_control_msg(
  devHandle,
  USB_ENDPOINT_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  HID_GET_REPORT,
  (HID_REPORT_TYPE_INPUT << 8) | reportId,
  INTERFACE_NUMBER,
  buf,
  sizeof(buf),
  10000);

我真的不确定hid_get_report,hid_report_type_input和interface_number。我在网络上的一个示例中找到了它们。更改各种值确实会导致不同的返回代码,但似乎在任何地方都没有记录下来。

看来您需要在调用其他功能之前分离内核并要求接口。我打电话给以下内容,并解决了问题。

usb_detach_kernel_driver_np
usb_claim_interface

最新更新